#include "vk_string.hpp"

namespace vkt {

// Enums

String On_Str_VkResult(VkResult e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_SUCCESS: str = "VK_SUCCESS"; break;
    case VK_NOT_READY: str = "VK_NOT_READY"; break;
    case VK_TIMEOUT: str = "VK_TIMEOUT"; break;
    case VK_EVENT_SET: str = "VK_EVENT_SET"; break;
    case VK_EVENT_RESET: str = "VK_EVENT_RESET"; break;
    case VK_INCOMPLETE: str = "VK_INCOMPLETE"; break;
    case VK_ERROR_OUT_OF_HOST_MEMORY: str = "VK_ERROR_OUT_OF_HOST_MEMORY"; break;
    case VK_ERROR_OUT_OF_DEVICE_MEMORY: str = "VK_ERROR_OUT_OF_DEVICE_MEMORY"; break;
    case VK_ERROR_INITIALIZATION_FAILED: str = "VK_ERROR_INITIALIZATION_FAILED"; break;
    case VK_ERROR_DEVICE_LOST: str = "VK_ERROR_DEVICE_LOST"; break;
    case VK_ERROR_MEMORY_MAP_FAILED: str = "VK_ERROR_MEMORY_MAP_FAILED"; break;
    case VK_ERROR_LAYER_NOT_PRESENT: str = "VK_ERROR_LAYER_NOT_PRESENT"; break;
    case VK_ERROR_EXTENSION_NOT_PRESENT: str = "VK_ERROR_EXTENSION_NOT_PRESENT"; break;
    case VK_ERROR_FEATURE_NOT_PRESENT: str = "VK_ERROR_FEATURE_NOT_PRESENT"; break;
    case VK_ERROR_INCOMPATIBLE_DRIVER: str = "VK_ERROR_INCOMPATIBLE_DRIVER"; break;
    case VK_ERROR_TOO_MANY_OBJECTS: str = "VK_ERROR_TOO_MANY_OBJECTS"; break;
    case VK_ERROR_FORMAT_NOT_SUPPORTED: str = "VK_ERROR_FORMAT_NOT_SUPPORTED"; break;
    case VK_ERROR_FRAGMENTED_POOL: str = "VK_ERROR_FRAGMENTED_POOL"; break;
    case VK_ERROR_UNKNOWN: str = "VK_ERROR_UNKNOWN"; break;
    case VK_ERROR_OUT_OF_POOL_MEMORY: str = "VK_ERROR_OUT_OF_POOL_MEMORY"; break;
    case VK_ERROR_INVALID_EXTERNAL_HANDLE: str = "VK_ERROR_INVALID_EXTERNAL_HANDLE"; break;
    case VK_ERROR_FRAGMENTATION: str = "VK_ERROR_FRAGMENTATION"; break;
    case VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS: str = "VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS"; break;
    case VK_PIPELINE_COMPILE_REQUIRED: str = "VK_PIPELINE_COMPILE_REQUIRED"; break;
    case VK_ERROR_SURFACE_LOST_KHR: str = "VK_ERROR_SURFACE_LOST_KHR"; break;
    case VK_ERROR_NATIVE_WINDOW_IN_USE_KHR: str = "VK_ERROR_NATIVE_WINDOW_IN_USE_KHR"; break;
    case VK_SUBOPTIMAL_KHR: str = "VK_SUBOPTIMAL_KHR"; break;
    case VK_ERROR_OUT_OF_DATE_KHR: str = "VK_ERROR_OUT_OF_DATE_KHR"; break;
    case VK_ERROR_INCOMPATIBLE_DISPLAY_KHR: str = "VK_ERROR_INCOMPATIBLE_DISPLAY_KHR"; break;
    case VK_ERROR_VALIDATION_FAILED_EXT: str = "VK_ERROR_VALIDATION_FAILED_EXT"; break;
    case VK_ERROR_INVALID_SHADER_NV: str = "VK_ERROR_INVALID_SHADER_NV"; break;
    case VK_ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR: str = "VK_ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR"; break;
    case VK_ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR: str = "VK_ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR"; break;
    case VK_ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR: str = "VK_ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR"; break;
    case VK_ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR: str = "VK_ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR"; break;
    case VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR: str = "VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR"; break;
    case VK_ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR: str = "VK_ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR"; break;
    case VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT:
        str = "VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT";
        break;
    case VK_ERROR_NOT_PERMITTED_KHR: str = "VK_ERROR_NOT_PERMITTED_KHR"; break;
    case VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT: str = "VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT"; break;
    case VK_THREAD_IDLE_KHR: str = "VK_THREAD_IDLE_KHR"; break;
    case VK_THREAD_DONE_KHR: str = "VK_THREAD_DONE_KHR"; break;
    case VK_OPERATION_DEFERRED_KHR: str = "VK_OPERATION_DEFERRED_KHR"; break;
    case VK_OPERATION_NOT_DEFERRED_KHR: str = "VK_OPERATION_NOT_DEFERRED_KHR"; break;
    case VK_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR: str = "VK_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR"; break;
    case VK_ERROR_COMPRESSION_EXHAUSTED_EXT: str = "VK_ERROR_COMPRESSION_EXHAUSTED_EXT"; break;
    case VK_INCOMPATIBLE_SHADER_BINARY_EXT: str = "VK_INCOMPATIBLE_SHADER_BINARY_EXT"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkStructureType(VkStructureType e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_STRUCTURE_TYPE_APPLICATION_INFO: str = "APPLICATION_INFO"; break;
    case VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO: str = "INSTANCE_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO: str = "DEVICE_QUEUE_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO: str = "DEVICE_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_SUBMIT_INFO: str = "SUBMIT_INFO"; break;
    case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: str = "MEMORY_ALLOCATE_INFO"; break;
    case VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE: str = "MAPPED_MEMORY_RANGE"; break;
    case VK_STRUCTURE_TYPE_BIND_SPARSE_INFO: str = "BIND_SPARSE_INFO"; break;
    case VK_STRUCTURE_TYPE_FENCE_CREATE_INFO: str = "FENCE_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO: str = "SEMAPHORE_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_EVENT_CREATE_INFO: str = "EVENT_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO: str = "QUERY_POOL_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO: str = "BUFFER_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO: str = "BUFFER_VIEW_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO: str = "IMAGE_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO: str = "IMAGE_VIEW_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO: str = "SHADER_MODULE_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO: str = "PIPELINE_CACHE_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO: str = "PIPELINE_SHADER_STAGE_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO: str = "PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO: str = "PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO: str = "PIPELINE_TESSELLATION_STATE_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO: str = "PIPELINE_VIEWPORT_STATE_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO: str = "PIPELINE_RASTERIZATION_STATE_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO: str = "PIPELINE_MULTISAMPLE_STATE_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO: str = "PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO: str = "PIPELINE_COLOR_BLEND_STATE_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO: str = "PIPELINE_DYNAMIC_STATE_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO: str = "GRAPHICS_PIPELINE_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO: str = "COMPUTE_PIPELINE_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO: str = "PIPELINE_LAYOUT_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO: str = "SAMPLER_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO: str = "DESCRIPTOR_SET_LAYOUT_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO: str = "DESCRIPTOR_POOL_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO: str = "DESCRIPTOR_SET_ALLOCATE_INFO"; break;
    case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET: str = "WRITE_DESCRIPTOR_SET"; break;
    case VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET: str = "COPY_DESCRIPTOR_SET"; break;
    case VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO: str = "FRAMEBUFFER_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO: str = "RENDER_PASS_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO: str = "COMMAND_POOL_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO: str = "COMMAND_BUFFER_ALLOCATE_INFO"; break;
    case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO: str = "COMMAND_BUFFER_INHERITANCE_INFO"; break;
    case VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO: str = "COMMAND_BUFFER_BEGIN_INFO"; break;
    case VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO: str = "RENDER_PASS_BEGIN_INFO"; break;
    case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER: str = "BUFFER_MEMORY_BARRIER"; break;
    case VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER: str = "IMAGE_MEMORY_BARRIER"; break;
    case VK_STRUCTURE_TYPE_MEMORY_BARRIER: str = "MEMORY_BARRIER"; break;
    case VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO: str = "LOADER_INSTANCE_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO: str = "LOADER_DEVICE_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES: str = "PHYSICAL_DEVICE_SUBGROUP_PROPERTIES"; break;
    case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO: str = "BIND_BUFFER_MEMORY_INFO"; break;
    case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO: str = "BIND_IMAGE_MEMORY_INFO"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES: str = "PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES"; break;
    case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS: str = "MEMORY_DEDICATED_REQUIREMENTS"; break;
    case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO: str = "MEMORY_DEDICATED_ALLOCATE_INFO"; break;
    case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO: str = "MEMORY_ALLOCATE_FLAGS_INFO"; break;
    case VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO: str = "DEVICE_GROUP_RENDER_PASS_BEGIN_INFO"; break;
    case VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO: str = "DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO"; break;
    case VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO: str = "DEVICE_GROUP_SUBMIT_INFO"; break;
    case VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO: str = "DEVICE_GROUP_BIND_SPARSE_INFO"; break;
    case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO: str = "BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO"; break;
    case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO: str = "BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES: str = "PHYSICAL_DEVICE_GROUP_PROPERTIES"; break;
    case VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO: str = "DEVICE_GROUP_DEVICE_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2: str = "BUFFER_MEMORY_REQUIREMENTS_INFO_2"; break;
    case VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2: str = "IMAGE_MEMORY_REQUIREMENTS_INFO_2"; break;
    case VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2: str = "IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2"; break;
    case VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2: str = "MEMORY_REQUIREMENTS_2"; break;
    case VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2: str = "SPARSE_IMAGE_MEMORY_REQUIREMENTS_2"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2: str = "PHYSICAL_DEVICE_FEATURES_2"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2: str = "PHYSICAL_DEVICE_PROPERTIES_2"; break;
    case VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2: str = "FORMAT_PROPERTIES_2"; break;
    case VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2: str = "IMAGE_FORMAT_PROPERTIES_2"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2: str = "PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2"; break;
    case VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2: str = "QUEUE_FAMILY_PROPERTIES_2"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2: str = "PHYSICAL_DEVICE_MEMORY_PROPERTIES_2"; break;
    case VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2: str = "SPARSE_IMAGE_FORMAT_PROPERTIES_2"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2:
        str = "PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES: str = "PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES"; break;
    case VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO:
        str = "RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO";
        break;
    case VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO: str = "IMAGE_VIEW_USAGE_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO:
        str = "PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO";
        break;
    case VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO: str = "RENDER_PASS_MULTIVIEW_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES: str = "PHYSICAL_DEVICE_MULTIVIEW_FEATURES"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES: str = "PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES:
        str = "PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES";
        break;
    case VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO: str = "PROTECTED_SUBMIT_INFO"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES: str = "PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES:
        str = "PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES";
        break;
    case VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2: str = "DEVICE_QUEUE_INFO_2"; break;
    case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO: str = "SAMPLER_YCBCR_CONVERSION_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO: str = "SAMPLER_YCBCR_CONVERSION_INFO"; break;
    case VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO: str = "BIND_IMAGE_PLANE_MEMORY_INFO"; break;
    case VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO: str = "IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES:
        str = "PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES";
        break;
    case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES:
        str = "SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES";
        break;
    case VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO: str = "DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO:
        str = "PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO";
        break;
    case VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES: str = "EXTERNAL_IMAGE_FORMAT_PROPERTIES"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO: str = "PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO"; break;
    case VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES: str = "EXTERNAL_BUFFER_PROPERTIES"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES: str = "PHYSICAL_DEVICE_ID_PROPERTIES"; break;
    case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO: str = "EXTERNAL_MEMORY_BUFFER_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO: str = "EXTERNAL_MEMORY_IMAGE_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO: str = "EXPORT_MEMORY_ALLOCATE_INFO"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO: str = "PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO"; break;
    case VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES: str = "EXTERNAL_FENCE_PROPERTIES"; break;
    case VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO: str = "EXPORT_FENCE_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO: str = "EXPORT_SEMAPHORE_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO: str = "PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO"; break;
    case VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES: str = "EXTERNAL_SEMAPHORE_PROPERTIES"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES: str = "PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES"; break;
    case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT: str = "DESCRIPTOR_SET_LAYOUT_SUPPORT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES:
        str = "PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES: str = "PHYSICAL_DEVICE_VULKAN_1_1_FEATURES"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES: str = "PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES: str = "PHYSICAL_DEVICE_VULKAN_1_2_FEATURES"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES: str = "PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES"; break;
    case VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO: str = "IMAGE_FORMAT_LIST_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2: str = "ATTACHMENT_DESCRIPTION_2"; break;
    case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2: str = "ATTACHMENT_REFERENCE_2"; break;
    case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2: str = "SUBPASS_DESCRIPTION_2"; break;
    case VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2: str = "SUBPASS_DEPENDENCY_2"; break;
    case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2: str = "RENDER_PASS_CREATE_INFO_2"; break;
    case VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO: str = "SUBPASS_BEGIN_INFO"; break;
    case VK_STRUCTURE_TYPE_SUBPASS_END_INFO: str = "SUBPASS_END_INFO"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES: str = "PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES: str = "PHYSICAL_DEVICE_DRIVER_PROPERTIES"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES:
        str = "PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES:
        str = "PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES: str = "PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES"; break;
    case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO:
        str = "DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES:
        str = "PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES:
        str = "PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES";
        break;
    case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO:
        str = "DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO";
        break;
    case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT:
        str = "DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES:
        str = "PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES";
        break;
    case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE: str = "SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES:
        str = "PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES";
        break;
    case VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO: str = "IMAGE_STENCIL_USAGE_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES:
        str = "PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES";
        break;
    case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO: str = "SAMPLER_REDUCTION_MODE_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES:
        str = "PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES:
        str = "PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES";
        break;
    case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO: str = "FRAMEBUFFER_ATTACHMENTS_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO: str = "FRAMEBUFFER_ATTACHMENT_IMAGE_INFO"; break;
    case VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO: str = "RENDER_PASS_ATTACHMENT_BEGIN_INFO"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES:
        str = "PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES:
        str = "PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES:
        str = "PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES";
        break;
    case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT: str = "ATTACHMENT_REFERENCE_STENCIL_LAYOUT"; break;
    case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT: str = "ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES: str = "PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES:
        str = "PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES:
        str = "PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES";
        break;
    case VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO: str = "SEMAPHORE_TYPE_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO: str = "TIMELINE_SEMAPHORE_SUBMIT_INFO"; break;
    case VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO: str = "SEMAPHORE_WAIT_INFO"; break;
    case VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO: str = "SEMAPHORE_SIGNAL_INFO"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES:
        str = "PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES";
        break;
    case VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO: str = "BUFFER_DEVICE_ADDRESS_INFO"; break;
    case VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO: str = "BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO:
        str = "MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO";
        break;
    case VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO: str = "DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES: str = "PHYSICAL_DEVICE_VULKAN_1_3_FEATURES"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES: str = "PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES"; break;
    case VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO: str = "PIPELINE_CREATION_FEEDBACK_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES:
        str = "PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES: str = "PHYSICAL_DEVICE_TOOL_PROPERTIES"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES:
        str = "PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES: str = "PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES"; break;
    case VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO: str = "DEVICE_PRIVATE_DATA_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO: str = "PRIVATE_DATA_SLOT_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES:
        str = "PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES";
        break;
    case VK_STRUCTURE_TYPE_MEMORY_BARRIER_2: str = "MEMORY_BARRIER_2"; break;
    case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2: str = "BUFFER_MEMORY_BARRIER_2"; break;
    case VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2: str = "IMAGE_MEMORY_BARRIER_2"; break;
    case VK_STRUCTURE_TYPE_DEPENDENCY_INFO: str = "DEPENDENCY_INFO"; break;
    case VK_STRUCTURE_TYPE_SUBMIT_INFO_2: str = "SUBMIT_INFO_2"; break;
    case VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO: str = "SEMAPHORE_SUBMIT_INFO"; break;
    case VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO: str = "COMMAND_BUFFER_SUBMIT_INFO"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES:
        str = "PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES:
        str = "PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES: str = "PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES"; break;
    case VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2: str = "COPY_BUFFER_INFO_2"; break;
    case VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2: str = "COPY_IMAGE_INFO_2"; break;
    case VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2: str = "COPY_BUFFER_TO_IMAGE_INFO_2"; break;
    case VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2: str = "COPY_IMAGE_TO_BUFFER_INFO_2"; break;
    case VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2: str = "BLIT_IMAGE_INFO_2"; break;
    case VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2: str = "RESOLVE_IMAGE_INFO_2"; break;
    case VK_STRUCTURE_TYPE_BUFFER_COPY_2: str = "BUFFER_COPY_2"; break;
    case VK_STRUCTURE_TYPE_IMAGE_COPY_2: str = "IMAGE_COPY_2"; break;
    case VK_STRUCTURE_TYPE_IMAGE_BLIT_2: str = "IMAGE_BLIT_2"; break;
    case VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2: str = "BUFFER_IMAGE_COPY_2"; break;
    case VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2: str = "IMAGE_RESOLVE_2"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES:
        str = "PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES";
        break;
    case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO:
        str = "PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES:
        str = "PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES:
        str = "PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES:
        str = "PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES";
        break;
    case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK: str = "WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK"; break;
    case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO:
        str = "DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES:
        str = "PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES";
        break;
    case VK_STRUCTURE_TYPE_RENDERING_INFO: str = "RENDERING_INFO"; break;
    case VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO: str = "RENDERING_ATTACHMENT_INFO"; break;
    case VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO: str = "PIPELINE_RENDERING_CREATE_INFO"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES:
        str = "PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES";
        break;
    case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO: str = "COMMAND_BUFFER_INHERITANCE_RENDERING_INFO"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES:
        str = "PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES:
        str = "PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES:
        str = "PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES";
        break;
    case VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3: str = "FORMAT_PROPERTIES_3"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES: str = "PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES: str = "PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES"; break;
    case VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS: str = "DEVICE_BUFFER_MEMORY_REQUIREMENTS"; break;
    case VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS: str = "DEVICE_IMAGE_MEMORY_REQUIREMENTS"; break;
    case VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR: str = "SWAPCHAIN_CREATE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_PRESENT_INFO_KHR: str = "PRESENT_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR: str = "DEVICE_GROUP_PRESENT_CAPABILITIES_KHR"; break;
    case VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR: str = "IMAGE_SWAPCHAIN_CREATE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR: str = "BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR: str = "ACQUIRE_NEXT_IMAGE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR: str = "DEVICE_GROUP_PRESENT_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR: str = "DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR: str = "DISPLAY_MODE_CREATE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR: str = "DISPLAY_SURFACE_CREATE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR: str = "DISPLAY_PRESENT_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR: str = "XLIB_SURFACE_CREATE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR: str = "XCB_SURFACE_CREATE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR: str = "WAYLAND_SURFACE_CREATE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR: str = "ANDROID_SURFACE_CREATE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR: str = "WIN32_SURFACE_CREATE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT: str = "DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD:
        str = "PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD";
        break;
    case VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT: str = "DEBUG_MARKER_OBJECT_NAME_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT: str = "DEBUG_MARKER_OBJECT_TAG_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT: str = "DEBUG_MARKER_MARKER_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_VIDEO_PROFILE_INFO_KHR: str = "VIDEO_PROFILE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR: str = "VIDEO_CAPABILITIES_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_INFO_KHR: str = "VIDEO_PICTURE_RESOURCE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_SESSION_MEMORY_REQUIREMENTS_KHR: str = "VIDEO_SESSION_MEMORY_REQUIREMENTS_KHR"; break;
    case VK_STRUCTURE_TYPE_BIND_VIDEO_SESSION_MEMORY_INFO_KHR: str = "BIND_VIDEO_SESSION_MEMORY_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR: str = "VIDEO_SESSION_CREATE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR: str = "VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR: str = "VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR: str = "VIDEO_BEGIN_CODING_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR: str = "VIDEO_END_CODING_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR: str = "VIDEO_CODING_CONTROL_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_INFO_KHR: str = "VIDEO_REFERENCE_SLOT_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_QUEUE_FAMILY_VIDEO_PROPERTIES_KHR: str = "QUEUE_FAMILY_VIDEO_PROPERTIES_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_PROFILE_LIST_INFO_KHR: str = "VIDEO_PROFILE_LIST_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR: str = "PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR: str = "VIDEO_FORMAT_PROPERTIES_KHR"; break;
    case VK_STRUCTURE_TYPE_QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR:
        str = "QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR";
        break;
    case VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR: str = "VIDEO_DECODE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_DECODE_CAPABILITIES_KHR: str = "VIDEO_DECODE_CAPABILITIES_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_DECODE_USAGE_INFO_KHR: str = "VIDEO_DECODE_USAGE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV: str = "DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV"; break;
    case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV:
        str = "DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV";
        break;
    case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV:
        str = "DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT:
        str = "PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT:
        str = "PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT";
        break;
    case VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX: str = "CU_MODULE_CREATE_INFO_NVX"; break;
    case VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX: str = "CU_FUNCTION_CREATE_INFO_NVX"; break;
    case VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX: str = "CU_LAUNCH_INFO_NVX"; break;
    case VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX: str = "IMAGE_VIEW_HANDLE_INFO_NVX"; break;
    case VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX: str = "IMAGE_VIEW_ADDRESS_PROPERTIES_NVX"; break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_KHR: str = "VIDEO_ENCODE_H264_CAPABILITIES_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR:
        str = "VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR";
        break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR:
        str = "VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR";
        break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PICTURE_INFO_KHR: str = "VIDEO_ENCODE_H264_PICTURE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_KHR: str = "VIDEO_ENCODE_H264_DPB_SLOT_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_INFO_KHR: str = "VIDEO_ENCODE_H264_NALU_SLICE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_KHR:
        str = "VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_KHR";
        break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_KHR: str = "VIDEO_ENCODE_H264_PROFILE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_KHR: str = "VIDEO_ENCODE_H264_RATE_CONTROL_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_KHR:
        str = "VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_KHR";
        break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_KHR: str = "VIDEO_ENCODE_H264_SESSION_CREATE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_KHR:
        str = "VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_KHR";
        break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_KHR:
        str = "VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_KHR";
        break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_KHR:
        str = "VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_KHR";
        break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_KHR: str = "VIDEO_ENCODE_H265_CAPABILITIES_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR:
        str = "VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR";
        break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR:
        str = "VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR";
        break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PICTURE_INFO_KHR: str = "VIDEO_ENCODE_H265_PICTURE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_KHR: str = "VIDEO_ENCODE_H265_DPB_SLOT_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_KHR:
        str = "VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_KHR";
        break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_KHR:
        str = "VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_KHR";
        break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_KHR: str = "VIDEO_ENCODE_H265_PROFILE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_KHR: str = "VIDEO_ENCODE_H265_RATE_CONTROL_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_KHR:
        str = "VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_KHR";
        break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_KHR: str = "VIDEO_ENCODE_H265_SESSION_CREATE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_KHR:
        str = "VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_KHR";
        break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_KHR:
        str = "VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_KHR";
        break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_KHR:
        str = "VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_KHR";
        break;
    case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR: str = "VIDEO_DECODE_H264_CAPABILITIES_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR: str = "VIDEO_DECODE_H264_PICTURE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR: str = "VIDEO_DECODE_H264_PROFILE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR:
        str = "VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR";
        break;
    case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR:
        str = "VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR";
        break;
    case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR: str = "VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD: str = "TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD"; break;
    case VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR:
        str = "RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR";
        break;
    case VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT:
        str = "RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT";
        break;
    case VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD: str = "ATTACHMENT_SAMPLE_COUNT_INFO_AMD"; break;
    case VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX: str = "MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX"; break;
    case VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP: str = "STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV:
        str = "PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV";
        break;
    case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV: str = "EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV"; break;
    case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV: str = "EXPORT_MEMORY_ALLOCATE_INFO_NV"; break;
    case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV: str = "IMPORT_MEMORY_WIN32_HANDLE_INFO_NV"; break;
    case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV: str = "EXPORT_MEMORY_WIN32_HANDLE_INFO_NV"; break;
    case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV: str = "WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV"; break;
    case VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT: str = "VALIDATION_FLAGS_EXT"; break;
    case VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN: str = "VI_SURFACE_CREATE_INFO_NN"; break;
    case VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT: str = "IMAGE_VIEW_ASTC_DECODE_MODE_EXT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT: str = "PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT"; break;
    case VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT: str = "PIPELINE_ROBUSTNESS_CREATE_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT:
        str = "PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT";
        break;
    case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR: str = "IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR: str = "EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR: str = "MEMORY_WIN32_HANDLE_PROPERTIES_KHR"; break;
    case VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR: str = "MEMORY_GET_WIN32_HANDLE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR: str = "IMPORT_MEMORY_FD_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR: str = "MEMORY_FD_PROPERTIES_KHR"; break;
    case VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR: str = "MEMORY_GET_FD_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR:
        str = "WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR";
        break;
    case VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR: str = "IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR: str = "EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR: str = "D3D12_FENCE_SUBMIT_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR: str = "SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR: str = "IMPORT_SEMAPHORE_FD_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR: str = "SEMAPHORE_GET_FD_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR:
        str = "PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR";
        break;
    case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT:
        str = "COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT: str = "CONDITIONAL_RENDERING_BEGIN_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR: str = "PRESENT_REGIONS_KHR"; break;
    case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV:
        str = "PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV";
        break;
    case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT: str = "SURFACE_CAPABILITIES_2_EXT"; break;
    case VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT: str = "DISPLAY_POWER_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT: str = "DEVICE_EVENT_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT: str = "DISPLAY_EVENT_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT: str = "SWAPCHAIN_COUNTER_CREATE_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE: str = "PRESENT_TIMES_INFO_GOOGLE"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX:
        str = "PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX";
        break;
    case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV:
        str = "PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT:
        str = "PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT:
        str = "PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT:
        str = "PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT:
        str = "PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT:
        str = "PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT";
        break;
    case VK_STRUCTURE_TYPE_HDR_METADATA_EXT: str = "HDR_METADATA_EXT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG:
        str = "PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG";
        break;
    case VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR: str = "SHARED_PRESENT_SURFACE_CAPABILITIES_KHR"; break;
    case VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR: str = "IMPORT_FENCE_WIN32_HANDLE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR: str = "EXPORT_FENCE_WIN32_HANDLE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR: str = "FENCE_GET_WIN32_HANDLE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR: str = "IMPORT_FENCE_FD_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR: str = "FENCE_GET_FD_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR:
        str = "PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR:
        str = "PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR";
        break;
    case VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR: str = "QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR: str = "PERFORMANCE_QUERY_SUBMIT_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR: str = "ACQUIRE_PROFILING_LOCK_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR: str = "PERFORMANCE_COUNTER_KHR"; break;
    case VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR: str = "PERFORMANCE_COUNTER_DESCRIPTION_KHR"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR: str = "PHYSICAL_DEVICE_SURFACE_INFO_2_KHR"; break;
    case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR: str = "SURFACE_CAPABILITIES_2_KHR"; break;
    case VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR: str = "SURFACE_FORMAT_2_KHR"; break;
    case VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR: str = "DISPLAY_PROPERTIES_2_KHR"; break;
    case VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR: str = "DISPLAY_PLANE_PROPERTIES_2_KHR"; break;
    case VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR: str = "DISPLAY_MODE_PROPERTIES_2_KHR"; break;
    case VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR: str = "DISPLAY_PLANE_INFO_2_KHR"; break;
    case VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR: str = "DISPLAY_PLANE_CAPABILITIES_2_KHR"; break;
    case VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK: str = "IOS_SURFACE_CREATE_INFO_MVK"; break;
    case VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK: str = "MACOS_SURFACE_CREATE_INFO_MVK"; break;
    case VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT: str = "DEBUG_UTILS_OBJECT_NAME_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT: str = "DEBUG_UTILS_OBJECT_TAG_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT: str = "DEBUG_UTILS_LABEL_EXT"; break;
    case VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT: str = "DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT"; break;
    case VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT: str = "DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID: str = "ANDROID_HARDWARE_BUFFER_USAGE_ANDROID"; break;
    case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID:
        str = "ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID";
        break;
    case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID:
        str = "ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID";
        break;
    case VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID:
        str = "IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID";
        break;
    case VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID:
        str = "MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID";
        break;
    case VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID: str = "EXTERNAL_FORMAT_ANDROID"; break;
    case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID:
        str = "ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID";
        break;
#ifdef VK_ENABLE_BETA_EXTENSIONS
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX:
        str = "PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX:
        str = "PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX";
        break;
    case VK_STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX:
        str = "EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX";
        break;
    case VK_STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX: str = "EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX"; break;
    case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX:
        str = "PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX";
        break;
#endif // VK_ENABLE_BETA_EXTENSIONS
    case VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT: str = "SAMPLE_LOCATIONS_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT:
        str = "RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT";
        break;
    case VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT:
        str = "PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT:
        str = "PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT";
        break;
    case VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT: str = "MULTISAMPLE_PROPERTIES_EXT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT:
        str = "PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT:
        str = "PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT";
        break;
    case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV:
        str = "PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV";
        break;
    case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR:
        str = "WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR";
        break;
    case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR:
        str = "ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR";
        break;
    case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR:
        str = "ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR";
        break;
    case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR:
        str = "ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR";
        break;
    case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR:
        str = "ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR";
        break;
    case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR:
        str = "ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR";
        break;
    case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR: str = "ACCELERATION_STRUCTURE_GEOMETRY_KHR"; break;
    case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR: str = "ACCELERATION_STRUCTURE_VERSION_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR: str = "COPY_ACCELERATION_STRUCTURE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR:
        str = "COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR";
        break;
    case VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR:
        str = "COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR:
        str = "PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR:
        str = "PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR";
        break;
    case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR: str = "ACCELERATION_STRUCTURE_CREATE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR:
        str = "ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR:
        str = "PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR:
        str = "PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR";
        break;
    case VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR: str = "RAY_TRACING_PIPELINE_CREATE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR: str = "RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR:
        str = "RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR: str = "PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR"; break;
    case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV:
        str = "PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV:
        str = "PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV:
        str = "PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV";
        break;
    case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT: str = "DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT:
        str = "PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT";
        break;
    case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT:
        str = "IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT";
        break;
    case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT:
        str = "IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT";
        break;
    case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT: str = "IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT"; break;
    case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT: str = "DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT"; break;
    case VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT: str = "VALIDATION_CACHE_CREATE_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT:
        str = "SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT";
        break;
#ifdef VK_ENABLE_BETA_EXTENSIONS
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR:
        str = "PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR:
        str = "PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR";
        break;
#endif // VK_ENABLE_BETA_EXTENSIONS
    case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV:
        str = "PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV:
        str = "PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV:
        str = "PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV";
        break;
    case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV:
        str = "PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV";
        break;
    case VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV: str = "RAY_TRACING_PIPELINE_CREATE_INFO_NV"; break;
    case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV: str = "ACCELERATION_STRUCTURE_CREATE_INFO_NV"; break;
    case VK_STRUCTURE_TYPE_GEOMETRY_NV: str = "GEOMETRY_NV"; break;
    case VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV: str = "GEOMETRY_TRIANGLES_NV"; break;
    case VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV: str = "GEOMETRY_AABB_NV"; break;
    case VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV:
        str = "BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV";
        break;
    case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV:
        str = "WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV";
        break;
    case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV:
        str = "ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV: str = "PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV"; break;
    case VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV: str = "RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV"; break;
    case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV: str = "ACCELERATION_STRUCTURE_INFO_NV"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV:
        str = "PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV";
        break;
    case VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV:
        str = "PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT:
        str = "PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT";
        break;
    case VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT:
        str = "FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT";
        break;
    case VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT: str = "IMPORT_MEMORY_HOST_POINTER_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT: str = "MEMORY_HOST_POINTER_PROPERTIES_EXT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT:
        str = "PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR: str = "PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR"; break;
    case VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD: str = "PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD:
        str = "PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD";
        break;
    case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR: str = "VIDEO_DECODE_H265_CAPABILITIES_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR:
        str = "VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR";
        break;
    case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR:
        str = "VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR";
        break;
    case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR: str = "VIDEO_DECODE_H265_PROFILE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR: str = "VIDEO_DECODE_H265_PICTURE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR: str = "VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR:
        str = "DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR:
        str = "PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR";
        break;
    case VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR:
        str = "QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR";
        break;
    case VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD:
        str = "DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT:
        str = "PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP: str = "PRESENT_FRAME_TOKEN_GGP"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV:
        str = "PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV: str = "PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV: str = "PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV:
        str = "PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV";
        break;
    case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV:
        str = "PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV:
        str = "PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV";
        break;
    case VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV: str = "CHECKPOINT_DATA_NV"; break;
    case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV: str = "QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL:
        str = "PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL";
        break;
    case VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL:
        str = "QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL";
        break;
    case VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL: str = "INITIALIZE_PERFORMANCE_API_INFO_INTEL"; break;
    case VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL: str = "PERFORMANCE_MARKER_INFO_INTEL"; break;
    case VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL: str = "PERFORMANCE_STREAM_MARKER_INFO_INTEL"; break;
    case VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL: str = "PERFORMANCE_OVERRIDE_INFO_INTEL"; break;
    case VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL:
        str = "PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT:
        str = "PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT";
        break;
    case VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD:
        str = "DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD";
        break;
    case VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD:
        str = "SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD";
        break;
    case VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA: str = "IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA"; break;
    case VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT: str = "METAL_SURFACE_CREATE_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT:
        str = "PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT";
        break;
    case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT:
        str = "RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT";
        break;
    case VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR: str = "FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR:
        str = "PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR:
        str = "PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR:
        str = "PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR: str = "PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD:
        str = "PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD:
        str = "PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR:
        str = "PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR";
        break;
    case VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO_KHR: str = "RENDERING_ATTACHMENT_LOCATION_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR: str = "RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR:
        str = "PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT:
        str = "PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT: str = "MEMORY_PRIORITY_ALLOCATE_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR: str = "SURFACE_PROTECTED_CAPABILITIES_KHR"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV:
        str = "PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT: str = "BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT: str = "VALIDATION_FEATURES_EXT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR: str = "PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV:
        str = "PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV";
        break;
    case VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV: str = "COOPERATIVE_MATRIX_PROPERTIES_NV"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV:
        str = "PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV:
        str = "PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV";
        break;
    case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV:
        str = "PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV";
        break;
    case VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV: str = "FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT:
        str = "PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT:
        str = "PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT";
        break;
    case VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT: str = "SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT:
        str = "SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT";
        break;
    case VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT:
        str = "SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT";
        break;
    case VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT: str = "HEADLESS_SURFACE_CREATE_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR:
        str = "PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR";
        break;
    case VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR: str = "PIPELINE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR: str = "PIPELINE_EXECUTABLE_PROPERTIES_KHR"; break;
    case VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR: str = "PIPELINE_EXECUTABLE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR: str = "PIPELINE_EXECUTABLE_STATISTIC_KHR"; break;
    case VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR:
        str = "PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT:
        str = "PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT";
        break;
    case VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT: str = "MEMORY_TO_IMAGE_COPY_EXT"; break;
    case VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT: str = "IMAGE_TO_MEMORY_COPY_EXT"; break;
    case VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT: str = "COPY_IMAGE_TO_MEMORY_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT: str = "COPY_MEMORY_TO_IMAGE_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT: str = "HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT: str = "COPY_IMAGE_TO_IMAGE_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT: str = "SUBRESOURCE_HOST_MEMCPY_SIZE_EXT"; break;
    case VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT:
        str = "HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT";
        break;
    case VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR: str = "MEMORY_MAP_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR: str = "MEMORY_UNMAP_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT:
        str = "PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT";
        break;
    case VK_STRUCTURE_TYPE_MEMORY_MAP_PLACED_INFO_EXT: str = "MEMORY_MAP_PLACED_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT: str = "SURFACE_PRESENT_MODE_EXT"; break;
    case VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT: str = "SURFACE_PRESENT_SCALING_CAPABILITIES_EXT"; break;
    case VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT: str = "SURFACE_PRESENT_MODE_COMPATIBILITY_EXT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT: str = "SWAPCHAIN_PRESENT_FENCE_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT: str = "SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT: str = "SWAPCHAIN_PRESENT_MODE_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT: str = "SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT: str = "RELEASE_SWAPCHAIN_IMAGES_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV:
        str = "PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV";
        break;
    case VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV: str = "GRAPHICS_SHADER_GROUP_CREATE_INFO_NV"; break;
    case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV:
        str = "GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV";
        break;
    case VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV: str = "INDIRECT_COMMANDS_LAYOUT_TOKEN_NV"; break;
    case VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV: str = "INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV"; break;
    case VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV: str = "GENERATED_COMMANDS_INFO_NV"; break;
    case VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV:
        str = "GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV:
        str = "PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV:
        str = "PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV";
        break;
    case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV:
        str = "COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM:
        str = "COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM";
        break;
    case VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM: str = "RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT: str = "DEPTH_BIAS_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT: str = "DEPTH_BIAS_REPRESENTATION_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT:
        str = "DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT";
        break;
    case VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT: str = "DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT: str = "PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT:
        str = "PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT";
        break;
    case VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT:
        str = "SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT:
        str = "PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR: str = "PIPELINE_LIBRARY_CREATE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV:
        str = "PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV";
        break;
    case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV: str = "SURFACE_CAPABILITIES_PRESENT_BARRIER_NV"; break;
    case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV: str = "SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV"; break;
    case VK_STRUCTURE_TYPE_PRESENT_ID_KHR: str = "PRESENT_ID_KHR"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR: str = "PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR: str = "VIDEO_ENCODE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR: str = "VIDEO_ENCODE_RATE_CONTROL_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR: str = "VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR: str = "VIDEO_ENCODE_CAPABILITIES_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR: str = "VIDEO_ENCODE_USAGE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR:
        str = "QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR:
        str = "PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR";
        break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR: str = "VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR: str = "VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR:
        str = "VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR";
        break;
    case VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR:
        str = "VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV:
        str = "PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV";
        break;
    case VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV: str = "DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV"; break;
    case VK_STRUCTURE_TYPE_CUDA_MODULE_CREATE_INFO_NV: str = "CUDA_MODULE_CREATE_INFO_NV"; break;
    case VK_STRUCTURE_TYPE_CUDA_FUNCTION_CREATE_INFO_NV: str = "CUDA_FUNCTION_CREATE_INFO_NV"; break;
    case VK_STRUCTURE_TYPE_CUDA_LAUNCH_INFO_NV: str = "CUDA_LAUNCH_INFO_NV"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV:
        str = "PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV:
        str = "PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV";
        break;
    case VK_STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV: str = "QUERY_LOW_LATENCY_SUPPORT_NV"; break;
    case VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT: str = "EXPORT_METAL_OBJECT_CREATE_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT: str = "EXPORT_METAL_OBJECTS_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT: str = "EXPORT_METAL_DEVICE_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_EXPORT_METAL_COMMAND_QUEUE_INFO_EXT: str = "EXPORT_METAL_COMMAND_QUEUE_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_EXPORT_METAL_BUFFER_INFO_EXT: str = "EXPORT_METAL_BUFFER_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_IMPORT_METAL_BUFFER_INFO_EXT: str = "IMPORT_METAL_BUFFER_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_EXPORT_METAL_TEXTURE_INFO_EXT: str = "EXPORT_METAL_TEXTURE_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_IMPORT_METAL_TEXTURE_INFO_EXT: str = "IMPORT_METAL_TEXTURE_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_EXPORT_METAL_IO_SURFACE_INFO_EXT: str = "EXPORT_METAL_IO_SURFACE_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT: str = "IMPORT_METAL_IO_SURFACE_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT: str = "EXPORT_METAL_SHARED_EVENT_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT: str = "IMPORT_METAL_SHARED_EVENT_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV: str = "QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV"; break;
    case VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV: str = "CHECKPOINT_DATA_2_NV"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT:
        str = "PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT:
        str = "PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT: str = "DESCRIPTOR_ADDRESS_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT: str = "DESCRIPTOR_GET_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT: str = "BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT: str = "IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT:
        str = "IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT";
        break;
    case VK_STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT: str = "SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT:
        str = "OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT";
        break;
    case VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT: str = "DESCRIPTOR_BUFFER_BINDING_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT:
        str = "DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT";
        break;
    case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT:
        str = "ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT:
        str = "PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT";
        break;
    case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT: str = "GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD:
        str = "PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR:
        str = "PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR:
        str = "PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR:
        str = "PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV:
        str = "PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV:
        str = "PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV";
        break;
    case VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV:
        str = "PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV";
        break;
    case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV:
        str = "ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV:
        str = "PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV";
        break;
    case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV: str = "ACCELERATION_STRUCTURE_MOTION_INFO_NV"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT: str = "PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT:
        str = "PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT:
        str = "PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT";
        break;
    case VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM: str = "COPY_COMMAND_TRANSFORM_INFO_QCOM"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR:
        str = "PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT: str = "IMAGE_COMPRESSION_CONTROL_EXT"; break;
    case VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT: str = "IMAGE_COMPRESSION_PROPERTIES_EXT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT: str = "PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT: str = "PHYSICAL_DEVICE_FAULT_FEATURES_EXT"; break;
    case VK_STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXT: str = "DEVICE_FAULT_COUNTS_EXT"; break;
    case VK_STRUCTURE_TYPE_DEVICE_FAULT_INFO_EXT: str = "DEVICE_FAULT_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT: str = "DIRECTFB_SURFACE_CREATE_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT: str = "VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT"; break;
    case VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT: str = "VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT: str = "PHYSICAL_DEVICE_DRM_PROPERTIES_EXT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT: str = "DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT:
        str = "PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA: str = "IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA"; break;
    case VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA: str = "MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA"; break;
    case VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA: str = "MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA"; break;
    case VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA:
        str = "IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA";
        break;
    case VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA: str = "SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA"; break;
    case VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA: str = "BUFFER_COLLECTION_CREATE_INFO_FUCHSIA"; break;
    case VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA: str = "IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA"; break;
    case VK_STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA:
        str = "BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA";
        break;
    case VK_STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA: str = "BUFFER_COLLECTION_PROPERTIES_FUCHSIA"; break;
    case VK_STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA: str = "BUFFER_CONSTRAINTS_INFO_FUCHSIA"; break;
    case VK_STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA:
        str = "BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA";
        break;
    case VK_STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA: str = "IMAGE_CONSTRAINTS_INFO_FUCHSIA"; break;
    case VK_STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA: str = "IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA"; break;
    case VK_STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA: str = "SYSMEM_COLOR_SPACE_FUCHSIA"; break;
    case VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA:
        str = "BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA";
        break;
    case VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI:
        str = "SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI:
        str = "PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI:
        str = "PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI:
        str = "PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI";
        break;
    case VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV: str = "MEMORY_GET_REMOTE_ADDRESS_INFO_NV"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV:
        str = "PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV";
        break;
    case VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT: str = "PIPELINE_PROPERTIES_IDENTIFIER_EXT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT: str = "FRAME_BOUNDARY_EXT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT: str = "SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT"; break;
    case VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT:
        str = "MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX: str = "SCREEN_SURFACE_CREATE_INFO_QNX"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT: str = "PIPELINE_COLOR_WRITE_CREATE_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR:
        str = "PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT: str = "IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT: str = "PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT: str = "PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT:
        str = "PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT";
        break;
    case VK_STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT: str = "MICROMAP_BUILD_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT: str = "MICROMAP_VERSION_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT: str = "COPY_MICROMAP_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT: str = "COPY_MICROMAP_TO_MEMORY_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT: str = "COPY_MEMORY_TO_MICROMAP_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT:
        str = "PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT";
        break;
    case VK_STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT: str = "MICROMAP_CREATE_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT: str = "MICROMAP_BUILD_SIZES_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT:
        str = "ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT";
        break;
#ifdef VK_ENABLE_BETA_EXTENSIONS
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV:
        str = "PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV:
        str = "PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV";
        break;
    case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV:
        str = "ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV";
        break;
#endif // VK_ENABLE_BETA_EXTENSIONS
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI:
        str = "PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI:
        str = "PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI:
        str = "PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT:
        str = "SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM:
        str = "PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR:
        str = "PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR";
        break;
    case VK_STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM:
        str = "DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM:
        str = "PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM:
        str = "PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT: str = "IMAGE_VIEW_SLICED_CREATE_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE:
        str = "PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE";
        break;
    case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE: str = "DESCRIPTOR_SET_BINDING_REFERENCE_VALVE"; break;
    case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE:
        str = "DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM:
        str = "PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM:
        str = "PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM";
        break;
    case VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM: str = "RENDER_PASS_STRIPE_BEGIN_INFO_ARM"; break;
    case VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM: str = "RENDER_PASS_STRIPE_INFO_ARM"; break;
    case VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM: str = "RENDER_PASS_STRIPE_SUBMIT_INFO_ARM"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM:
        str = "PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM:
        str = "PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM";
        break;
    case VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM:
        str = "SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV:
        str = "PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV:
        str = "PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV:
        str = "PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV:
        str = "PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV:
        str = "PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV";
        break;
    case VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV: str = "COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV"; break;
    case VK_STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV: str = "PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV:
        str = "PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR:
        str = "PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM:
        str = "PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM:
        str = "PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM";
        break;
    case VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM: str = "IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT:
        str = "PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT";
        break;
    case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT: str = "EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT:
        str = "PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT: str = "RENDER_PASS_CREATION_CONTROL_EXT"; break;
    case VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT:
        str = "RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT";
        break;
    case VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT:
        str = "RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT";
        break;
    case VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG: str = "DIRECT_DRIVER_LOADING_INFO_LUNARG"; break;
    case VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG: str = "DIRECT_DRIVER_LOADING_LIST_LUNARG"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT:
        str = "PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT:
        str = "PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT";
        break;
    case VK_STRUCTURE_TYPE_SHADER_MODULE_IDENTIFIER_EXT: str = "SHADER_MODULE_IDENTIFIER_EXT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV: str = "PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV:
        str = "PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV";
        break;
    case VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV: str = "OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV"; break;
    case VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV: str = "OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV"; break;
    case VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_INFO_NV: str = "OPTICAL_FLOW_SESSION_CREATE_INFO_NV"; break;
    case VK_STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV: str = "OPTICAL_FLOW_EXECUTE_INFO_NV"; break;
    case VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV:
        str = "OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID:
        str = "PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID:
        str = "PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID";
        break;
    case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID:
        str = "ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR:
        str = "PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR:
        str = "PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR";
        break;
    case VK_STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR: str = "RENDERING_AREA_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR: str = "DEVICE_IMAGE_SUBRESOURCE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR: str = "SUBRESOURCE_LAYOUT_2_KHR"; break;
    case VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR: str = "IMAGE_SUBRESOURCE_2_KHR"; break;
    case VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR: str = "PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR: str = "BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR:
        str = "PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT:
        str = "PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT";
        break;
    case VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT: str = "SHADER_CREATE_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM:
        str = "PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM";
        break;
    case VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM: str = "TILE_PROPERTIES_QCOM"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC:
        str = "PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC";
        break;
    case VK_STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC: str = "AMIGO_PROFILING_SUBMIT_INFO_SEC"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM:
        str = "PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV:
        str = "PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV:
        str = "PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV:
        str = "PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV:
        str = "PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT: str = "MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT: str = "LAYER_SETTINGS_CREATE_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM:
        str = "PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM:
        str = "PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV: str = "LATENCY_SLEEP_MODE_INFO_NV"; break;
    case VK_STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV: str = "LATENCY_SLEEP_INFO_NV"; break;
    case VK_STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV: str = "SET_LATENCY_MARKER_INFO_NV"; break;
    case VK_STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV: str = "GET_LATENCY_MARKER_INFO_NV"; break;
    case VK_STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV: str = "LATENCY_TIMINGS_FRAME_REPORT_NV"; break;
    case VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV: str = "LATENCY_SUBMISSION_PRESENT_ID_NV"; break;
    case VK_STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV: str = "OUT_OF_BAND_QUEUE_TYPE_INFO_NV"; break;
    case VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV: str = "SWAPCHAIN_LATENCY_CREATE_INFO_NV"; break;
    case VK_STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV: str = "LATENCY_SURFACE_CAPABILITIES_NV"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR:
        str = "PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR";
        break;
    case VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR: str = "COOPERATIVE_MATRIX_PROPERTIES_KHR"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR:
        str = "PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM:
        str = "PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM";
        break;
    case VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM:
        str = "MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM";
        break;
    case VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_KHR: str = "VIDEO_DECODE_AV1_CAPABILITIES_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PICTURE_INFO_KHR: str = "VIDEO_DECODE_AV1_PICTURE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_KHR: str = "VIDEO_DECODE_AV1_PROFILE_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR:
        str = "VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR";
        break;
    case VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR: str = "VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR:
        str = "PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR";
        break;
    case VK_STRUCTURE_TYPE_VIDEO_INLINE_QUERY_INFO_KHR: str = "VIDEO_INLINE_QUERY_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV:
        str = "PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM:
        str = "PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM:
        str = "PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM";
        break;
    case VK_STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM:
        str = "SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM";
        break;
    case VK_STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM: str = "SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM:
        str = "PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM";
        break;
    case VK_STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM: str = "BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM:
        str = "PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM";
        break;
    case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM:
        str = "SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM: str = "PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT:
        str = "PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR:
        str = "PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR";
        break;
    case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR:
        str = "PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR:
        str = "PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES_KHR:
        str = "PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES_KHR";
        break;
    case VK_STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX: str = "SCREEN_BUFFER_PROPERTIES_QNX"; break;
    case VK_STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX: str = "SCREEN_BUFFER_FORMAT_PROPERTIES_QNX"; break;
    case VK_STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX: str = "IMPORT_SCREEN_BUFFER_INFO_QNX"; break;
    case VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX: str = "EXTERNAL_FORMAT_QNX"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX:
        str = "PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT:
        str = "PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR:
        str = "PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR:
        str = "PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR";
        break;
    case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR:
        str = "PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR:
        str = "PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR";
        break;
    case VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR: str = "CALIBRATED_TIMESTAMP_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR:
        str = "PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR:
        str = "PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR:
        str = "PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR";
        break;
    case VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS_KHR: str = "BIND_MEMORY_STATUS_KHR"; break;
    case VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR: str = "BIND_DESCRIPTOR_SETS_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR: str = "PUSH_CONSTANTS_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO_KHR: str = "PUSH_DESCRIPTOR_SET_INFO_KHR"; break;
    case VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR:
        str = "PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR";
        break;
    case VK_STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT: str = "SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT"; break;
    case VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT:
        str = "BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV:
        str = "PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV:
        str = "PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV:
        str = "PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV";
        break;
    case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV:
        str = "PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV";
        break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkPipelineCacheHeaderVersion(VkPipelineCacheHeaderVersion e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_PIPELINE_CACHE_HEADER_VERSION_ONE: str = "ONE"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkImageLayout(VkImageLayout e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_IMAGE_LAYOUT_UNDEFINED: str = "UNDEFINED"; break;
    case VK_IMAGE_LAYOUT_GENERAL: str = "GENERAL"; break;
    case VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL: str = "COLOR_ATTACHMENT_OPTIMAL"; break;
    case VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL: str = "DEPTH_STENCIL_ATTACHMENT_OPTIMAL"; break;
    case VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL: str = "DEPTH_STENCIL_READ_ONLY_OPTIMAL"; break;
    case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL: str = "SHADER_READ_ONLY_OPTIMAL"; break;
    case VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL: str = "TRANSFER_SRC_OPTIMAL"; break;
    case VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL: str = "TRANSFER_DST_OPTIMAL"; break;
    case VK_IMAGE_LAYOUT_PREINITIALIZED: str = "PREINITIALIZED"; break;
    case VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL: str = "DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL"; break;
    case VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL: str = "DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL"; break;
    case VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL: str = "DEPTH_ATTACHMENT_OPTIMAL"; break;
    case VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL: str = "DEPTH_READ_ONLY_OPTIMAL"; break;
    case VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL: str = "STENCIL_ATTACHMENT_OPTIMAL"; break;
    case VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL: str = "STENCIL_READ_ONLY_OPTIMAL"; break;
    case VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL: str = "READ_ONLY_OPTIMAL"; break;
    case VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL: str = "ATTACHMENT_OPTIMAL"; break;
    case VK_IMAGE_LAYOUT_PRESENT_SRC_KHR: str = "PRESENT_SRC_KHR"; break;
    case VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR: str = "VIDEO_DECODE_DST_KHR"; break;
    case VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR: str = "VIDEO_DECODE_SRC_KHR"; break;
    case VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR: str = "VIDEO_DECODE_DPB_KHR"; break;
    case VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR: str = "SHARED_PRESENT_KHR"; break;
    case VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT: str = "FRAGMENT_DENSITY_MAP_OPTIMAL_EXT"; break;
    case VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR:
        str = "FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR";
        break;
    case VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR: str = "RENDERING_LOCAL_READ_KHR"; break;
    case VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR: str = "VIDEO_ENCODE_DST_KHR"; break;
    case VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR: str = "VIDEO_ENCODE_SRC_KHR"; break;
    case VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR: str = "VIDEO_ENCODE_DPB_KHR"; break;
    case VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT: str = "ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkObjectType(VkObjectType e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_OBJECT_TYPE_UNKNOWN: str = "UNKNOWN"; break;
    case VK_OBJECT_TYPE_INSTANCE: str = "INSTANCE"; break;
    case VK_OBJECT_TYPE_PHYSICAL_DEVICE: str = "PHYSICAL_DEVICE"; break;
    case VK_OBJECT_TYPE_DEVICE: str = "DEVICE"; break;
    case VK_OBJECT_TYPE_QUEUE: str = "QUEUE"; break;
    case VK_OBJECT_TYPE_SEMAPHORE: str = "SEMAPHORE"; break;
    case VK_OBJECT_TYPE_COMMAND_BUFFER: str = "COMMAND_BUFFER"; break;
    case VK_OBJECT_TYPE_FENCE: str = "FENCE"; break;
    case VK_OBJECT_TYPE_DEVICE_MEMORY: str = "DEVICE_MEMORY"; break;
    case VK_OBJECT_TYPE_BUFFER: str = "BUFFER"; break;
    case VK_OBJECT_TYPE_IMAGE: str = "IMAGE"; break;
    case VK_OBJECT_TYPE_EVENT: str = "EVENT"; break;
    case VK_OBJECT_TYPE_QUERY_POOL: str = "QUERY_POOL"; break;
    case VK_OBJECT_TYPE_BUFFER_VIEW: str = "BUFFER_VIEW"; break;
    case VK_OBJECT_TYPE_IMAGE_VIEW: str = "IMAGE_VIEW"; break;
    case VK_OBJECT_TYPE_SHADER_MODULE: str = "SHADER_MODULE"; break;
    case VK_OBJECT_TYPE_PIPELINE_CACHE: str = "PIPELINE_CACHE"; break;
    case VK_OBJECT_TYPE_PIPELINE_LAYOUT: str = "PIPELINE_LAYOUT"; break;
    case VK_OBJECT_TYPE_RENDER_PASS: str = "RENDER_PASS"; break;
    case VK_OBJECT_TYPE_PIPELINE: str = "PIPELINE"; break;
    case VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT: str = "DESCRIPTOR_SET_LAYOUT"; break;
    case VK_OBJECT_TYPE_SAMPLER: str = "SAMPLER"; break;
    case VK_OBJECT_TYPE_DESCRIPTOR_POOL: str = "DESCRIPTOR_POOL"; break;
    case VK_OBJECT_TYPE_DESCRIPTOR_SET: str = "DESCRIPTOR_SET"; break;
    case VK_OBJECT_TYPE_FRAMEBUFFER: str = "FRAMEBUFFER"; break;
    case VK_OBJECT_TYPE_COMMAND_POOL: str = "COMMAND_POOL"; break;
    case VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION: str = "SAMPLER_YCBCR_CONVERSION"; break;
    case VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE: str = "DESCRIPTOR_UPDATE_TEMPLATE"; break;
    case VK_OBJECT_TYPE_PRIVATE_DATA_SLOT: str = "PRIVATE_DATA_SLOT"; break;
    case VK_OBJECT_TYPE_SURFACE_KHR: str = "SURFACE_KHR"; break;
    case VK_OBJECT_TYPE_SWAPCHAIN_KHR: str = "SWAPCHAIN_KHR"; break;
    case VK_OBJECT_TYPE_DISPLAY_KHR: str = "DISPLAY_KHR"; break;
    case VK_OBJECT_TYPE_DISPLAY_MODE_KHR: str = "DISPLAY_MODE_KHR"; break;
    case VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT: str = "DEBUG_REPORT_CALLBACK_EXT"; break;
    case VK_OBJECT_TYPE_VIDEO_SESSION_KHR: str = "VIDEO_SESSION_KHR"; break;
    case VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR: str = "VIDEO_SESSION_PARAMETERS_KHR"; break;
    case VK_OBJECT_TYPE_CU_MODULE_NVX: str = "CU_MODULE_NVX"; break;
    case VK_OBJECT_TYPE_CU_FUNCTION_NVX: str = "CU_FUNCTION_NVX"; break;
    case VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT: str = "DEBUG_UTILS_MESSENGER_EXT"; break;
    case VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR: str = "ACCELERATION_STRUCTURE_KHR"; break;
    case VK_OBJECT_TYPE_VALIDATION_CACHE_EXT: str = "VALIDATION_CACHE_EXT"; break;
    case VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV: str = "ACCELERATION_STRUCTURE_NV"; break;
    case VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL: str = "PERFORMANCE_CONFIGURATION_INTEL"; break;
    case VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR: str = "DEFERRED_OPERATION_KHR"; break;
    case VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV: str = "INDIRECT_COMMANDS_LAYOUT_NV"; break;
    case VK_OBJECT_TYPE_CUDA_MODULE_NV: str = "CUDA_MODULE_NV"; break;
    case VK_OBJECT_TYPE_CUDA_FUNCTION_NV: str = "CUDA_FUNCTION_NV"; break;
    case VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA: str = "BUFFER_COLLECTION_FUCHSIA"; break;
    case VK_OBJECT_TYPE_MICROMAP_EXT: str = "MICROMAP_EXT"; break;
    case VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV: str = "OPTICAL_FLOW_SESSION_NV"; break;
    case VK_OBJECT_TYPE_SHADER_EXT: str = "SHADER_EXT"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkVendorId(VkVendorId e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_VENDOR_ID_VIV: str = "VIV"; break;
    case VK_VENDOR_ID_VSI: str = "VSI"; break;
    case VK_VENDOR_ID_KAZAN: str = "KAZAN"; break;
    case VK_VENDOR_ID_CODEPLAY: str = "CODEPLAY"; break;
    case VK_VENDOR_ID_MESA: str = "MESA"; break;
    case VK_VENDOR_ID_POCL: str = "POCL"; break;
    case VK_VENDOR_ID_MOBILEYE: str = "MOBILEYE"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkSystemAllocationScope(VkSystemAllocationScope e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_SYSTEM_ALLOCATION_SCOPE_COMMAND: str = "COMMAND"; break;
    case VK_SYSTEM_ALLOCATION_SCOPE_OBJECT: str = "OBJECT"; break;
    case VK_SYSTEM_ALLOCATION_SCOPE_CACHE: str = "CACHE"; break;
    case VK_SYSTEM_ALLOCATION_SCOPE_DEVICE: str = "DEVICE"; break;
    case VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE: str = "INSTANCE"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkInternalAllocationType(VkInternalAllocationType e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE: str = "EXECUTABLE"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkFormat(VkFormat e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_FORMAT_UNDEFINED: str = "UNDEFINED"; break;
    case VK_FORMAT_R4G4_UNORM_PACK8: str = "R4G4_UNORM_PACK8"; break;
    case VK_FORMAT_R4G4B4A4_UNORM_PACK16: str = "R4G4B4A4_UNORM_PACK16"; break;
    case VK_FORMAT_B4G4R4A4_UNORM_PACK16: str = "B4G4R4A4_UNORM_PACK16"; break;
    case VK_FORMAT_R5G6B5_UNORM_PACK16: str = "R5G6B5_UNORM_PACK16"; break;
    case VK_FORMAT_B5G6R5_UNORM_PACK16: str = "B5G6R5_UNORM_PACK16"; break;
    case VK_FORMAT_R5G5B5A1_UNORM_PACK16: str = "R5G5B5A1_UNORM_PACK16"; break;
    case VK_FORMAT_B5G5R5A1_UNORM_PACK16: str = "B5G5R5A1_UNORM_PACK16"; break;
    case VK_FORMAT_A1R5G5B5_UNORM_PACK16: str = "A1R5G5B5_UNORM_PACK16"; break;
    case VK_FORMAT_R8_UNORM: str = "R8_UNORM"; break;
    case VK_FORMAT_R8_SNORM: str = "R8_SNORM"; break;
    case VK_FORMAT_R8_USCALED: str = "R8_USCALED"; break;
    case VK_FORMAT_R8_SSCALED: str = "R8_SSCALED"; break;
    case VK_FORMAT_R8_UINT: str = "R8_UINT"; break;
    case VK_FORMAT_R8_SINT: str = "R8_SINT"; break;
    case VK_FORMAT_R8_SRGB: str = "R8_SRGB"; break;
    case VK_FORMAT_R8G8_UNORM: str = "R8G8_UNORM"; break;
    case VK_FORMAT_R8G8_SNORM: str = "R8G8_SNORM"; break;
    case VK_FORMAT_R8G8_USCALED: str = "R8G8_USCALED"; break;
    case VK_FORMAT_R8G8_SSCALED: str = "R8G8_SSCALED"; break;
    case VK_FORMAT_R8G8_UINT: str = "R8G8_UINT"; break;
    case VK_FORMAT_R8G8_SINT: str = "R8G8_SINT"; break;
    case VK_FORMAT_R8G8_SRGB: str = "R8G8_SRGB"; break;
    case VK_FORMAT_R8G8B8_UNORM: str = "R8G8B8_UNORM"; break;
    case VK_FORMAT_R8G8B8_SNORM: str = "R8G8B8_SNORM"; break;
    case VK_FORMAT_R8G8B8_USCALED: str = "R8G8B8_USCALED"; break;
    case VK_FORMAT_R8G8B8_SSCALED: str = "R8G8B8_SSCALED"; break;
    case VK_FORMAT_R8G8B8_UINT: str = "R8G8B8_UINT"; break;
    case VK_FORMAT_R8G8B8_SINT: str = "R8G8B8_SINT"; break;
    case VK_FORMAT_R8G8B8_SRGB: str = "R8G8B8_SRGB"; break;
    case VK_FORMAT_B8G8R8_UNORM: str = "B8G8R8_UNORM"; break;
    case VK_FORMAT_B8G8R8_SNORM: str = "B8G8R8_SNORM"; break;
    case VK_FORMAT_B8G8R8_USCALED: str = "B8G8R8_USCALED"; break;
    case VK_FORMAT_B8G8R8_SSCALED: str = "B8G8R8_SSCALED"; break;
    case VK_FORMAT_B8G8R8_UINT: str = "B8G8R8_UINT"; break;
    case VK_FORMAT_B8G8R8_SINT: str = "B8G8R8_SINT"; break;
    case VK_FORMAT_B8G8R8_SRGB: str = "B8G8R8_SRGB"; break;
    case VK_FORMAT_R8G8B8A8_UNORM: str = "R8G8B8A8_UNORM"; break;
    case VK_FORMAT_R8G8B8A8_SNORM: str = "R8G8B8A8_SNORM"; break;
    case VK_FORMAT_R8G8B8A8_USCALED: str = "R8G8B8A8_USCALED"; break;
    case VK_FORMAT_R8G8B8A8_SSCALED: str = "R8G8B8A8_SSCALED"; break;
    case VK_FORMAT_R8G8B8A8_UINT: str = "R8G8B8A8_UINT"; break;
    case VK_FORMAT_R8G8B8A8_SINT: str = "R8G8B8A8_SINT"; break;
    case VK_FORMAT_R8G8B8A8_SRGB: str = "R8G8B8A8_SRGB"; break;
    case VK_FORMAT_B8G8R8A8_UNORM: str = "B8G8R8A8_UNORM"; break;
    case VK_FORMAT_B8G8R8A8_SNORM: str = "B8G8R8A8_SNORM"; break;
    case VK_FORMAT_B8G8R8A8_USCALED: str = "B8G8R8A8_USCALED"; break;
    case VK_FORMAT_B8G8R8A8_SSCALED: str = "B8G8R8A8_SSCALED"; break;
    case VK_FORMAT_B8G8R8A8_UINT: str = "B8G8R8A8_UINT"; break;
    case VK_FORMAT_B8G8R8A8_SINT: str = "B8G8R8A8_SINT"; break;
    case VK_FORMAT_B8G8R8A8_SRGB: str = "B8G8R8A8_SRGB"; break;
    case VK_FORMAT_A8B8G8R8_UNORM_PACK32: str = "A8B8G8R8_UNORM_PACK32"; break;
    case VK_FORMAT_A8B8G8R8_SNORM_PACK32: str = "A8B8G8R8_SNORM_PACK32"; break;
    case VK_FORMAT_A8B8G8R8_USCALED_PACK32: str = "A8B8G8R8_USCALED_PACK32"; break;
    case VK_FORMAT_A8B8G8R8_SSCALED_PACK32: str = "A8B8G8R8_SSCALED_PACK32"; break;
    case VK_FORMAT_A8B8G8R8_UINT_PACK32: str = "A8B8G8R8_UINT_PACK32"; break;
    case VK_FORMAT_A8B8G8R8_SINT_PACK32: str = "A8B8G8R8_SINT_PACK32"; break;
    case VK_FORMAT_A8B8G8R8_SRGB_PACK32: str = "A8B8G8R8_SRGB_PACK32"; break;
    case VK_FORMAT_A2R10G10B10_UNORM_PACK32: str = "A2R10G10B10_UNORM_PACK32"; break;
    case VK_FORMAT_A2R10G10B10_SNORM_PACK32: str = "A2R10G10B10_SNORM_PACK32"; break;
    case VK_FORMAT_A2R10G10B10_USCALED_PACK32: str = "A2R10G10B10_USCALED_PACK32"; break;
    case VK_FORMAT_A2R10G10B10_SSCALED_PACK32: str = "A2R10G10B10_SSCALED_PACK32"; break;
    case VK_FORMAT_A2R10G10B10_UINT_PACK32: str = "A2R10G10B10_UINT_PACK32"; break;
    case VK_FORMAT_A2R10G10B10_SINT_PACK32: str = "A2R10G10B10_SINT_PACK32"; break;
    case VK_FORMAT_A2B10G10R10_UNORM_PACK32: str = "A2B10G10R10_UNORM_PACK32"; break;
    case VK_FORMAT_A2B10G10R10_SNORM_PACK32: str = "A2B10G10R10_SNORM_PACK32"; break;
    case VK_FORMAT_A2B10G10R10_USCALED_PACK32: str = "A2B10G10R10_USCALED_PACK32"; break;
    case VK_FORMAT_A2B10G10R10_SSCALED_PACK32: str = "A2B10G10R10_SSCALED_PACK32"; break;
    case VK_FORMAT_A2B10G10R10_UINT_PACK32: str = "A2B10G10R10_UINT_PACK32"; break;
    case VK_FORMAT_A2B10G10R10_SINT_PACK32: str = "A2B10G10R10_SINT_PACK32"; break;
    case VK_FORMAT_R16_UNORM: str = "R16_UNORM"; break;
    case VK_FORMAT_R16_SNORM: str = "R16_SNORM"; break;
    case VK_FORMAT_R16_USCALED: str = "R16_USCALED"; break;
    case VK_FORMAT_R16_SSCALED: str = "R16_SSCALED"; break;
    case VK_FORMAT_R16_UINT: str = "R16_UINT"; break;
    case VK_FORMAT_R16_SINT: str = "R16_SINT"; break;
    case VK_FORMAT_R16_SFLOAT: str = "R16_SFLOAT"; break;
    case VK_FORMAT_R16G16_UNORM: str = "R16G16_UNORM"; break;
    case VK_FORMAT_R16G16_SNORM: str = "R16G16_SNORM"; break;
    case VK_FORMAT_R16G16_USCALED: str = "R16G16_USCALED"; break;
    case VK_FORMAT_R16G16_SSCALED: str = "R16G16_SSCALED"; break;
    case VK_FORMAT_R16G16_UINT: str = "R16G16_UINT"; break;
    case VK_FORMAT_R16G16_SINT: str = "R16G16_SINT"; break;
    case VK_FORMAT_R16G16_SFLOAT: str = "R16G16_SFLOAT"; break;
    case VK_FORMAT_R16G16B16_UNORM: str = "R16G16B16_UNORM"; break;
    case VK_FORMAT_R16G16B16_SNORM: str = "R16G16B16_SNORM"; break;
    case VK_FORMAT_R16G16B16_USCALED: str = "R16G16B16_USCALED"; break;
    case VK_FORMAT_R16G16B16_SSCALED: str = "R16G16B16_SSCALED"; break;
    case VK_FORMAT_R16G16B16_UINT: str = "R16G16B16_UINT"; break;
    case VK_FORMAT_R16G16B16_SINT: str = "R16G16B16_SINT"; break;
    case VK_FORMAT_R16G16B16_SFLOAT: str = "R16G16B16_SFLOAT"; break;
    case VK_FORMAT_R16G16B16A16_UNORM: str = "R16G16B16A16_UNORM"; break;
    case VK_FORMAT_R16G16B16A16_SNORM: str = "R16G16B16A16_SNORM"; break;
    case VK_FORMAT_R16G16B16A16_USCALED: str = "R16G16B16A16_USCALED"; break;
    case VK_FORMAT_R16G16B16A16_SSCALED: str = "R16G16B16A16_SSCALED"; break;
    case VK_FORMAT_R16G16B16A16_UINT: str = "R16G16B16A16_UINT"; break;
    case VK_FORMAT_R16G16B16A16_SINT: str = "R16G16B16A16_SINT"; break;
    case VK_FORMAT_R16G16B16A16_SFLOAT: str = "R16G16B16A16_SFLOAT"; break;
    case VK_FORMAT_R32_UINT: str = "R32_UINT"; break;
    case VK_FORMAT_R32_SINT: str = "R32_SINT"; break;
    case VK_FORMAT_R32_SFLOAT: str = "R32_SFLOAT"; break;
    case VK_FORMAT_R32G32_UINT: str = "R32G32_UINT"; break;
    case VK_FORMAT_R32G32_SINT: str = "R32G32_SINT"; break;
    case VK_FORMAT_R32G32_SFLOAT: str = "R32G32_SFLOAT"; break;
    case VK_FORMAT_R32G32B32_UINT: str = "R32G32B32_UINT"; break;
    case VK_FORMAT_R32G32B32_SINT: str = "R32G32B32_SINT"; break;
    case VK_FORMAT_R32G32B32_SFLOAT: str = "R32G32B32_SFLOAT"; break;
    case VK_FORMAT_R32G32B32A32_UINT: str = "R32G32B32A32_UINT"; break;
    case VK_FORMAT_R32G32B32A32_SINT: str = "R32G32B32A32_SINT"; break;
    case VK_FORMAT_R32G32B32A32_SFLOAT: str = "R32G32B32A32_SFLOAT"; break;
    case VK_FORMAT_R64_UINT: str = "R64_UINT"; break;
    case VK_FORMAT_R64_SINT: str = "R64_SINT"; break;
    case VK_FORMAT_R64_SFLOAT: str = "R64_SFLOAT"; break;
    case VK_FORMAT_R64G64_UINT: str = "R64G64_UINT"; break;
    case VK_FORMAT_R64G64_SINT: str = "R64G64_SINT"; break;
    case VK_FORMAT_R64G64_SFLOAT: str = "R64G64_SFLOAT"; break;
    case VK_FORMAT_R64G64B64_UINT: str = "R64G64B64_UINT"; break;
    case VK_FORMAT_R64G64B64_SINT: str = "R64G64B64_SINT"; break;
    case VK_FORMAT_R64G64B64_SFLOAT: str = "R64G64B64_SFLOAT"; break;
    case VK_FORMAT_R64G64B64A64_UINT: str = "R64G64B64A64_UINT"; break;
    case VK_FORMAT_R64G64B64A64_SINT: str = "R64G64B64A64_SINT"; break;
    case VK_FORMAT_R64G64B64A64_SFLOAT: str = "R64G64B64A64_SFLOAT"; break;
    case VK_FORMAT_B10G11R11_UFLOAT_PACK32: str = "B10G11R11_UFLOAT_PACK32"; break;
    case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32: str = "E5B9G9R9_UFLOAT_PACK32"; break;
    case VK_FORMAT_D16_UNORM: str = "D16_UNORM"; break;
    case VK_FORMAT_X8_D24_UNORM_PACK32: str = "X8_D24_UNORM_PACK32"; break;
    case VK_FORMAT_D32_SFLOAT: str = "D32_SFLOAT"; break;
    case VK_FORMAT_S8_UINT: str = "S8_UINT"; break;
    case VK_FORMAT_D16_UNORM_S8_UINT: str = "D16_UNORM_S8_UINT"; break;
    case VK_FORMAT_D24_UNORM_S8_UINT: str = "D24_UNORM_S8_UINT"; break;
    case VK_FORMAT_D32_SFLOAT_S8_UINT: str = "D32_SFLOAT_S8_UINT"; break;
    case VK_FORMAT_BC1_RGB_UNORM_BLOCK: str = "BC1_RGB_UNORM_BLOCK"; break;
    case VK_FORMAT_BC1_RGB_SRGB_BLOCK: str = "BC1_RGB_SRGB_BLOCK"; break;
    case VK_FORMAT_BC1_RGBA_UNORM_BLOCK: str = "BC1_RGBA_UNORM_BLOCK"; break;
    case VK_FORMAT_BC1_RGBA_SRGB_BLOCK: str = "BC1_RGBA_SRGB_BLOCK"; break;
    case VK_FORMAT_BC2_UNORM_BLOCK: str = "BC2_UNORM_BLOCK"; break;
    case VK_FORMAT_BC2_SRGB_BLOCK: str = "BC2_SRGB_BLOCK"; break;
    case VK_FORMAT_BC3_UNORM_BLOCK: str = "BC3_UNORM_BLOCK"; break;
    case VK_FORMAT_BC3_SRGB_BLOCK: str = "BC3_SRGB_BLOCK"; break;
    case VK_FORMAT_BC4_UNORM_BLOCK: str = "BC4_UNORM_BLOCK"; break;
    case VK_FORMAT_BC4_SNORM_BLOCK: str = "BC4_SNORM_BLOCK"; break;
    case VK_FORMAT_BC5_UNORM_BLOCK: str = "BC5_UNORM_BLOCK"; break;
    case VK_FORMAT_BC5_SNORM_BLOCK: str = "BC5_SNORM_BLOCK"; break;
    case VK_FORMAT_BC6H_UFLOAT_BLOCK: str = "BC6H_UFLOAT_BLOCK"; break;
    case VK_FORMAT_BC6H_SFLOAT_BLOCK: str = "BC6H_SFLOAT_BLOCK"; break;
    case VK_FORMAT_BC7_UNORM_BLOCK: str = "BC7_UNORM_BLOCK"; break;
    case VK_FORMAT_BC7_SRGB_BLOCK: str = "BC7_SRGB_BLOCK"; break;
    case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK: str = "ETC2_R8G8B8_UNORM_BLOCK"; break;
    case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK: str = "ETC2_R8G8B8_SRGB_BLOCK"; break;
    case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK: str = "ETC2_R8G8B8A1_UNORM_BLOCK"; break;
    case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK: str = "ETC2_R8G8B8A1_SRGB_BLOCK"; break;
    case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK: str = "ETC2_R8G8B8A8_UNORM_BLOCK"; break;
    case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK: str = "ETC2_R8G8B8A8_SRGB_BLOCK"; break;
    case VK_FORMAT_EAC_R11_UNORM_BLOCK: str = "EAC_R11_UNORM_BLOCK"; break;
    case VK_FORMAT_EAC_R11_SNORM_BLOCK: str = "EAC_R11_SNORM_BLOCK"; break;
    case VK_FORMAT_EAC_R11G11_UNORM_BLOCK: str = "EAC_R11G11_UNORM_BLOCK"; break;
    case VK_FORMAT_EAC_R11G11_SNORM_BLOCK: str = "EAC_R11G11_SNORM_BLOCK"; break;
    case VK_FORMAT_ASTC_4x4_UNORM_BLOCK: str = "ASTC_4x4_UNORM_BLOCK"; break;
    case VK_FORMAT_ASTC_4x4_SRGB_BLOCK: str = "ASTC_4x4_SRGB_BLOCK"; break;
    case VK_FORMAT_ASTC_5x4_UNORM_BLOCK: str = "ASTC_5x4_UNORM_BLOCK"; break;
    case VK_FORMAT_ASTC_5x4_SRGB_BLOCK: str = "ASTC_5x4_SRGB_BLOCK"; break;
    case VK_FORMAT_ASTC_5x5_UNORM_BLOCK: str = "ASTC_5x5_UNORM_BLOCK"; break;
    case VK_FORMAT_ASTC_5x5_SRGB_BLOCK: str = "ASTC_5x5_SRGB_BLOCK"; break;
    case VK_FORMAT_ASTC_6x5_UNORM_BLOCK: str = "ASTC_6x5_UNORM_BLOCK"; break;
    case VK_FORMAT_ASTC_6x5_SRGB_BLOCK: str = "ASTC_6x5_SRGB_BLOCK"; break;
    case VK_FORMAT_ASTC_6x6_UNORM_BLOCK: str = "ASTC_6x6_UNORM_BLOCK"; break;
    case VK_FORMAT_ASTC_6x6_SRGB_BLOCK: str = "ASTC_6x6_SRGB_BLOCK"; break;
    case VK_FORMAT_ASTC_8x5_UNORM_BLOCK: str = "ASTC_8x5_UNORM_BLOCK"; break;
    case VK_FORMAT_ASTC_8x5_SRGB_BLOCK: str = "ASTC_8x5_SRGB_BLOCK"; break;
    case VK_FORMAT_ASTC_8x6_UNORM_BLOCK: str = "ASTC_8x6_UNORM_BLOCK"; break;
    case VK_FORMAT_ASTC_8x6_SRGB_BLOCK: str = "ASTC_8x6_SRGB_BLOCK"; break;
    case VK_FORMAT_ASTC_8x8_UNORM_BLOCK: str = "ASTC_8x8_UNORM_BLOCK"; break;
    case VK_FORMAT_ASTC_8x8_SRGB_BLOCK: str = "ASTC_8x8_SRGB_BLOCK"; break;
    case VK_FORMAT_ASTC_10x5_UNORM_BLOCK: str = "ASTC_10x5_UNORM_BLOCK"; break;
    case VK_FORMAT_ASTC_10x5_SRGB_BLOCK: str = "ASTC_10x5_SRGB_BLOCK"; break;
    case VK_FORMAT_ASTC_10x6_UNORM_BLOCK: str = "ASTC_10x6_UNORM_BLOCK"; break;
    case VK_FORMAT_ASTC_10x6_SRGB_BLOCK: str = "ASTC_10x6_SRGB_BLOCK"; break;
    case VK_FORMAT_ASTC_10x8_UNORM_BLOCK: str = "ASTC_10x8_UNORM_BLOCK"; break;
    case VK_FORMAT_ASTC_10x8_SRGB_BLOCK: str = "ASTC_10x8_SRGB_BLOCK"; break;
    case VK_FORMAT_ASTC_10x10_UNORM_BLOCK: str = "ASTC_10x10_UNORM_BLOCK"; break;
    case VK_FORMAT_ASTC_10x10_SRGB_BLOCK: str = "ASTC_10x10_SRGB_BLOCK"; break;
    case VK_FORMAT_ASTC_12x10_UNORM_BLOCK: str = "ASTC_12x10_UNORM_BLOCK"; break;
    case VK_FORMAT_ASTC_12x10_SRGB_BLOCK: str = "ASTC_12x10_SRGB_BLOCK"; break;
    case VK_FORMAT_ASTC_12x12_UNORM_BLOCK: str = "ASTC_12x12_UNORM_BLOCK"; break;
    case VK_FORMAT_ASTC_12x12_SRGB_BLOCK: str = "ASTC_12x12_SRGB_BLOCK"; break;
    case VK_FORMAT_G8B8G8R8_422_UNORM: str = "G8B8G8R8_422_UNORM"; break;
    case VK_FORMAT_B8G8R8G8_422_UNORM: str = "B8G8R8G8_422_UNORM"; break;
    case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM: str = "G8_B8_R8_3PLANE_420_UNORM"; break;
    case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM: str = "G8_B8R8_2PLANE_420_UNORM"; break;
    case VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM: str = "G8_B8_R8_3PLANE_422_UNORM"; break;
    case VK_FORMAT_G8_B8R8_2PLANE_422_UNORM: str = "G8_B8R8_2PLANE_422_UNORM"; break;
    case VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM: str = "G8_B8_R8_3PLANE_444_UNORM"; break;
    case VK_FORMAT_R10X6_UNORM_PACK16: str = "R10X6_UNORM_PACK16"; break;
    case VK_FORMAT_R10X6G10X6_UNORM_2PACK16: str = "R10X6G10X6_UNORM_2PACK16"; break;
    case VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16: str = "R10X6G10X6B10X6A10X6_UNORM_4PACK16"; break;
    case VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16: str = "G10X6B10X6G10X6R10X6_422_UNORM_4PACK16"; break;
    case VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16: str = "B10X6G10X6R10X6G10X6_422_UNORM_4PACK16"; break;
    case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16: str = "G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16"; break;
    case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16: str = "G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16"; break;
    case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16: str = "G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16"; break;
    case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16: str = "G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16"; break;
    case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16: str = "G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16"; break;
    case VK_FORMAT_R12X4_UNORM_PACK16: str = "R12X4_UNORM_PACK16"; break;
    case VK_FORMAT_R12X4G12X4_UNORM_2PACK16: str = "R12X4G12X4_UNORM_2PACK16"; break;
    case VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16: str = "R12X4G12X4B12X4A12X4_UNORM_4PACK16"; break;
    case VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16: str = "G12X4B12X4G12X4R12X4_422_UNORM_4PACK16"; break;
    case VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16: str = "B12X4G12X4R12X4G12X4_422_UNORM_4PACK16"; break;
    case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16: str = "G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16"; break;
    case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16: str = "G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16"; break;
    case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16: str = "G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16"; break;
    case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16: str = "G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16"; break;
    case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16: str = "G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16"; break;
    case VK_FORMAT_G16B16G16R16_422_UNORM: str = "G16B16G16R16_422_UNORM"; break;
    case VK_FORMAT_B16G16R16G16_422_UNORM: str = "B16G16R16G16_422_UNORM"; break;
    case VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM: str = "G16_B16_R16_3PLANE_420_UNORM"; break;
    case VK_FORMAT_G16_B16R16_2PLANE_420_UNORM: str = "G16_B16R16_2PLANE_420_UNORM"; break;
    case VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM: str = "G16_B16_R16_3PLANE_422_UNORM"; break;
    case VK_FORMAT_G16_B16R16_2PLANE_422_UNORM: str = "G16_B16R16_2PLANE_422_UNORM"; break;
    case VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM: str = "G16_B16_R16_3PLANE_444_UNORM"; break;
    case VK_FORMAT_G8_B8R8_2PLANE_444_UNORM: str = "G8_B8R8_2PLANE_444_UNORM"; break;
    case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16: str = "G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16"; break;
    case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16: str = "G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16"; break;
    case VK_FORMAT_G16_B16R16_2PLANE_444_UNORM: str = "G16_B16R16_2PLANE_444_UNORM"; break;
    case VK_FORMAT_A4R4G4B4_UNORM_PACK16: str = "A4R4G4B4_UNORM_PACK16"; break;
    case VK_FORMAT_A4B4G4R4_UNORM_PACK16: str = "A4B4G4R4_UNORM_PACK16"; break;
    case VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK: str = "ASTC_4x4_SFLOAT_BLOCK"; break;
    case VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK: str = "ASTC_5x4_SFLOAT_BLOCK"; break;
    case VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK: str = "ASTC_5x5_SFLOAT_BLOCK"; break;
    case VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK: str = "ASTC_6x5_SFLOAT_BLOCK"; break;
    case VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK: str = "ASTC_6x6_SFLOAT_BLOCK"; break;
    case VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK: str = "ASTC_8x5_SFLOAT_BLOCK"; break;
    case VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK: str = "ASTC_8x6_SFLOAT_BLOCK"; break;
    case VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK: str = "ASTC_8x8_SFLOAT_BLOCK"; break;
    case VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK: str = "ASTC_10x5_SFLOAT_BLOCK"; break;
    case VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK: str = "ASTC_10x6_SFLOAT_BLOCK"; break;
    case VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK: str = "ASTC_10x8_SFLOAT_BLOCK"; break;
    case VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK: str = "ASTC_10x10_SFLOAT_BLOCK"; break;
    case VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK: str = "ASTC_12x10_SFLOAT_BLOCK"; break;
    case VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK: str = "ASTC_12x12_SFLOAT_BLOCK"; break;
    case VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG: str = "PVRTC1_2BPP_UNORM_BLOCK_IMG"; break;
    case VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG: str = "PVRTC1_4BPP_UNORM_BLOCK_IMG"; break;
    case VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG: str = "PVRTC2_2BPP_UNORM_BLOCK_IMG"; break;
    case VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG: str = "PVRTC2_4BPP_UNORM_BLOCK_IMG"; break;
    case VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG: str = "PVRTC1_2BPP_SRGB_BLOCK_IMG"; break;
    case VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG: str = "PVRTC1_4BPP_SRGB_BLOCK_IMG"; break;
    case VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG: str = "PVRTC2_2BPP_SRGB_BLOCK_IMG"; break;
    case VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG: str = "PVRTC2_4BPP_SRGB_BLOCK_IMG"; break;
    case VK_FORMAT_R16G16_S10_5_NV: str = "R16G16_S10_5_NV"; break;
    case VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR: str = "A1B5G5R5_UNORM_PACK16_KHR"; break;
    case VK_FORMAT_A8_UNORM_KHR: str = "A8_UNORM_KHR"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkImageTiling(VkImageTiling e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_IMAGE_TILING_OPTIMAL: str = "OPTIMAL"; break;
    case VK_IMAGE_TILING_LINEAR: str = "LINEAR"; break;
    case VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT: str = "DRM_FORMAT_MODIFIER_EXT"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkImageType(VkImageType e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_IMAGE_TYPE_1D: str = "1D"; break;
    case VK_IMAGE_TYPE_2D: str = "2D"; break;
    case VK_IMAGE_TYPE_3D: str = "3D"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkPhysicalDeviceType(VkPhysicalDeviceType e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_PHYSICAL_DEVICE_TYPE_OTHER: str = "OTHER"; break;
    case VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU: str = "INTEGRATED_GPU"; break;
    case VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU: str = "DISCRETE_GPU"; break;
    case VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU: str = "VIRTUAL_GPU"; break;
    case VK_PHYSICAL_DEVICE_TYPE_CPU: str = "CPU"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkQueryType(VkQueryType e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_QUERY_TYPE_OCCLUSION: str = "OCCLUSION"; break;
    case VK_QUERY_TYPE_PIPELINE_STATISTICS: str = "PIPELINE_STATISTICS"; break;
    case VK_QUERY_TYPE_TIMESTAMP: str = "TIMESTAMP"; break;
    case VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR: str = "RESULT_STATUS_ONLY_KHR"; break;
    case VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT: str = "TRANSFORM_FEEDBACK_STREAM_EXT"; break;
    case VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR: str = "PERFORMANCE_QUERY_KHR"; break;
    case VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR: str = "ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR"; break;
    case VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR:
        str = "ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR";
        break;
    case VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV: str = "ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV"; break;
    case VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL: str = "PERFORMANCE_QUERY_INTEL"; break;
    case VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR: str = "VIDEO_ENCODE_FEEDBACK_KHR"; break;
    case VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT: str = "MESH_PRIMITIVES_GENERATED_EXT"; break;
    case VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT: str = "PRIMITIVES_GENERATED_EXT"; break;
    case VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR:
        str = "ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR";
        break;
    case VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR: str = "ACCELERATION_STRUCTURE_SIZE_KHR"; break;
    case VK_QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT: str = "MICROMAP_SERIALIZATION_SIZE_EXT"; break;
    case VK_QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT: str = "MICROMAP_COMPACTED_SIZE_EXT"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkSharingMode(VkSharingMode e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_SHARING_MODE_EXCLUSIVE: str = "EXCLUSIVE"; break;
    case VK_SHARING_MODE_CONCURRENT: str = "CONCURRENT"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkComponentSwizzle(VkComponentSwizzle e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_COMPONENT_SWIZZLE_IDENTITY: str = "IDENTITY"; break;
    case VK_COMPONENT_SWIZZLE_ZERO: str = "ZERO"; break;
    case VK_COMPONENT_SWIZZLE_ONE: str = "ONE"; break;
    case VK_COMPONENT_SWIZZLE_R: str = "R"; break;
    case VK_COMPONENT_SWIZZLE_G: str = "G"; break;
    case VK_COMPONENT_SWIZZLE_B: str = "B"; break;
    case VK_COMPONENT_SWIZZLE_A: str = "A"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkImageViewType(VkImageViewType e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_IMAGE_VIEW_TYPE_1D: str = "1D"; break;
    case VK_IMAGE_VIEW_TYPE_2D: str = "2D"; break;
    case VK_IMAGE_VIEW_TYPE_3D: str = "3D"; break;
    case VK_IMAGE_VIEW_TYPE_CUBE: str = "CUBE"; break;
    case VK_IMAGE_VIEW_TYPE_1D_ARRAY: str = "1D_ARRAY"; break;
    case VK_IMAGE_VIEW_TYPE_2D_ARRAY: str = "2D_ARRAY"; break;
    case VK_IMAGE_VIEW_TYPE_CUBE_ARRAY: str = "CUBE_ARRAY"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkBlendFactor(VkBlendFactor e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_BLEND_FACTOR_ZERO: str = "ZERO"; break;
    case VK_BLEND_FACTOR_ONE: str = "ONE"; break;
    case VK_BLEND_FACTOR_SRC_COLOR: str = "SRC_COLOR"; break;
    case VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR: str = "ONE_MINUS_SRC_COLOR"; break;
    case VK_BLEND_FACTOR_DST_COLOR: str = "DST_COLOR"; break;
    case VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR: str = "ONE_MINUS_DST_COLOR"; break;
    case VK_BLEND_FACTOR_SRC_ALPHA: str = "SRC_ALPHA"; break;
    case VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA: str = "ONE_MINUS_SRC_ALPHA"; break;
    case VK_BLEND_FACTOR_DST_ALPHA: str = "DST_ALPHA"; break;
    case VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA: str = "ONE_MINUS_DST_ALPHA"; break;
    case VK_BLEND_FACTOR_CONSTANT_COLOR: str = "CONSTANT_COLOR"; break;
    case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR: str = "ONE_MINUS_CONSTANT_COLOR"; break;
    case VK_BLEND_FACTOR_CONSTANT_ALPHA: str = "CONSTANT_ALPHA"; break;
    case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA: str = "ONE_MINUS_CONSTANT_ALPHA"; break;
    case VK_BLEND_FACTOR_SRC_ALPHA_SATURATE: str = "SRC_ALPHA_SATURATE"; break;
    case VK_BLEND_FACTOR_SRC1_COLOR: str = "SRC1_COLOR"; break;
    case VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR: str = "ONE_MINUS_SRC1_COLOR"; break;
    case VK_BLEND_FACTOR_SRC1_ALPHA: str = "SRC1_ALPHA"; break;
    case VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA: str = "ONE_MINUS_SRC1_ALPHA"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkBlendOp(VkBlendOp e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_BLEND_OP_ADD: str = "ADD"; break;
    case VK_BLEND_OP_SUBTRACT: str = "SUBTRACT"; break;
    case VK_BLEND_OP_REVERSE_SUBTRACT: str = "REVERSE_SUBTRACT"; break;
    case VK_BLEND_OP_MIN: str = "MIN"; break;
    case VK_BLEND_OP_MAX: str = "MAX"; break;
    case VK_BLEND_OP_ZERO_EXT: str = "ZERO_EXT"; break;
    case VK_BLEND_OP_SRC_EXT: str = "SRC_EXT"; break;
    case VK_BLEND_OP_DST_EXT: str = "DST_EXT"; break;
    case VK_BLEND_OP_SRC_OVER_EXT: str = "SRC_OVER_EXT"; break;
    case VK_BLEND_OP_DST_OVER_EXT: str = "DST_OVER_EXT"; break;
    case VK_BLEND_OP_SRC_IN_EXT: str = "SRC_IN_EXT"; break;
    case VK_BLEND_OP_DST_IN_EXT: str = "DST_IN_EXT"; break;
    case VK_BLEND_OP_SRC_OUT_EXT: str = "SRC_OUT_EXT"; break;
    case VK_BLEND_OP_DST_OUT_EXT: str = "DST_OUT_EXT"; break;
    case VK_BLEND_OP_SRC_ATOP_EXT: str = "SRC_ATOP_EXT"; break;
    case VK_BLEND_OP_DST_ATOP_EXT: str = "DST_ATOP_EXT"; break;
    case VK_BLEND_OP_XOR_EXT: str = "XOR_EXT"; break;
    case VK_BLEND_OP_MULTIPLY_EXT: str = "MULTIPLY_EXT"; break;
    case VK_BLEND_OP_SCREEN_EXT: str = "SCREEN_EXT"; break;
    case VK_BLEND_OP_OVERLAY_EXT: str = "OVERLAY_EXT"; break;
    case VK_BLEND_OP_DARKEN_EXT: str = "DARKEN_EXT"; break;
    case VK_BLEND_OP_LIGHTEN_EXT: str = "LIGHTEN_EXT"; break;
    case VK_BLEND_OP_COLORDODGE_EXT: str = "COLORDODGE_EXT"; break;
    case VK_BLEND_OP_COLORBURN_EXT: str = "COLORBURN_EXT"; break;
    case VK_BLEND_OP_HARDLIGHT_EXT: str = "HARDLIGHT_EXT"; break;
    case VK_BLEND_OP_SOFTLIGHT_EXT: str = "SOFTLIGHT_EXT"; break;
    case VK_BLEND_OP_DIFFERENCE_EXT: str = "DIFFERENCE_EXT"; break;
    case VK_BLEND_OP_EXCLUSION_EXT: str = "EXCLUSION_EXT"; break;
    case VK_BLEND_OP_INVERT_EXT: str = "INVERT_EXT"; break;
    case VK_BLEND_OP_INVERT_RGB_EXT: str = "INVERT_RGB_EXT"; break;
    case VK_BLEND_OP_LINEARDODGE_EXT: str = "LINEARDODGE_EXT"; break;
    case VK_BLEND_OP_LINEARBURN_EXT: str = "LINEARBURN_EXT"; break;
    case VK_BLEND_OP_VIVIDLIGHT_EXT: str = "VIVIDLIGHT_EXT"; break;
    case VK_BLEND_OP_LINEARLIGHT_EXT: str = "LINEARLIGHT_EXT"; break;
    case VK_BLEND_OP_PINLIGHT_EXT: str = "PINLIGHT_EXT"; break;
    case VK_BLEND_OP_HARDMIX_EXT: str = "HARDMIX_EXT"; break;
    case VK_BLEND_OP_HSL_HUE_EXT: str = "HSL_HUE_EXT"; break;
    case VK_BLEND_OP_HSL_SATURATION_EXT: str = "HSL_SATURATION_EXT"; break;
    case VK_BLEND_OP_HSL_COLOR_EXT: str = "HSL_COLOR_EXT"; break;
    case VK_BLEND_OP_HSL_LUMINOSITY_EXT: str = "HSL_LUMINOSITY_EXT"; break;
    case VK_BLEND_OP_PLUS_EXT: str = "PLUS_EXT"; break;
    case VK_BLEND_OP_PLUS_CLAMPED_EXT: str = "PLUS_CLAMPED_EXT"; break;
    case VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT: str = "PLUS_CLAMPED_ALPHA_EXT"; break;
    case VK_BLEND_OP_PLUS_DARKER_EXT: str = "PLUS_DARKER_EXT"; break;
    case VK_BLEND_OP_MINUS_EXT: str = "MINUS_EXT"; break;
    case VK_BLEND_OP_MINUS_CLAMPED_EXT: str = "MINUS_CLAMPED_EXT"; break;
    case VK_BLEND_OP_CONTRAST_EXT: str = "CONTRAST_EXT"; break;
    case VK_BLEND_OP_INVERT_OVG_EXT: str = "INVERT_OVG_EXT"; break;
    case VK_BLEND_OP_RED_EXT: str = "RED_EXT"; break;
    case VK_BLEND_OP_GREEN_EXT: str = "GREEN_EXT"; break;
    case VK_BLEND_OP_BLUE_EXT: str = "BLUE_EXT"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkCompareOp(VkCompareOp e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_COMPARE_OP_NEVER: str = "NEVER"; break;
    case VK_COMPARE_OP_LESS: str = "LESS"; break;
    case VK_COMPARE_OP_EQUAL: str = "EQUAL"; break;
    case VK_COMPARE_OP_LESS_OR_EQUAL: str = "LESS_OR_EQUAL"; break;
    case VK_COMPARE_OP_GREATER: str = "GREATER"; break;
    case VK_COMPARE_OP_NOT_EQUAL: str = "NOT_EQUAL"; break;
    case VK_COMPARE_OP_GREATER_OR_EQUAL: str = "GREATER_OR_EQUAL"; break;
    case VK_COMPARE_OP_ALWAYS: str = "ALWAYS"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkDynamicState(VkDynamicState e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_DYNAMIC_STATE_VIEWPORT: str = "VIEWPORT"; break;
    case VK_DYNAMIC_STATE_SCISSOR: str = "SCISSOR"; break;
    case VK_DYNAMIC_STATE_LINE_WIDTH: str = "LINE_WIDTH"; break;
    case VK_DYNAMIC_STATE_DEPTH_BIAS: str = "DEPTH_BIAS"; break;
    case VK_DYNAMIC_STATE_BLEND_CONSTANTS: str = "BLEND_CONSTANTS"; break;
    case VK_DYNAMIC_STATE_DEPTH_BOUNDS: str = "DEPTH_BOUNDS"; break;
    case VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK: str = "STENCIL_COMPARE_MASK"; break;
    case VK_DYNAMIC_STATE_STENCIL_WRITE_MASK: str = "STENCIL_WRITE_MASK"; break;
    case VK_DYNAMIC_STATE_STENCIL_REFERENCE: str = "STENCIL_REFERENCE"; break;
    case VK_DYNAMIC_STATE_CULL_MODE: str = "CULL_MODE"; break;
    case VK_DYNAMIC_STATE_FRONT_FACE: str = "FRONT_FACE"; break;
    case VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY: str = "PRIMITIVE_TOPOLOGY"; break;
    case VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT: str = "VIEWPORT_WITH_COUNT"; break;
    case VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT: str = "SCISSOR_WITH_COUNT"; break;
    case VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE: str = "VERTEX_INPUT_BINDING_STRIDE"; break;
    case VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE: str = "DEPTH_TEST_ENABLE"; break;
    case VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE: str = "DEPTH_WRITE_ENABLE"; break;
    case VK_DYNAMIC_STATE_DEPTH_COMPARE_OP: str = "DEPTH_COMPARE_OP"; break;
    case VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE: str = "DEPTH_BOUNDS_TEST_ENABLE"; break;
    case VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE: str = "STENCIL_TEST_ENABLE"; break;
    case VK_DYNAMIC_STATE_STENCIL_OP: str = "STENCIL_OP"; break;
    case VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE: str = "RASTERIZER_DISCARD_ENABLE"; break;
    case VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE: str = "DEPTH_BIAS_ENABLE"; break;
    case VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE: str = "PRIMITIVE_RESTART_ENABLE"; break;
    case VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV: str = "VIEWPORT_W_SCALING_NV"; break;
    case VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT: str = "DISCARD_RECTANGLE_EXT"; break;
    case VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT: str = "DISCARD_RECTANGLE_ENABLE_EXT"; break;
    case VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT: str = "DISCARD_RECTANGLE_MODE_EXT"; break;
    case VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT: str = "SAMPLE_LOCATIONS_EXT"; break;
    case VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR: str = "RAY_TRACING_PIPELINE_STACK_SIZE_KHR"; break;
    case VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV: str = "VIEWPORT_SHADING_RATE_PALETTE_NV"; break;
    case VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV: str = "VIEWPORT_COARSE_SAMPLE_ORDER_NV"; break;
    case VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV: str = "EXCLUSIVE_SCISSOR_ENABLE_NV"; break;
    case VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV: str = "EXCLUSIVE_SCISSOR_NV"; break;
    case VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR: str = "FRAGMENT_SHADING_RATE_KHR"; break;
    case VK_DYNAMIC_STATE_VERTEX_INPUT_EXT: str = "VERTEX_INPUT_EXT"; break;
    case VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT: str = "PATCH_CONTROL_POINTS_EXT"; break;
    case VK_DYNAMIC_STATE_LOGIC_OP_EXT: str = "LOGIC_OP_EXT"; break;
    case VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT: str = "COLOR_WRITE_ENABLE_EXT"; break;
    case VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT: str = "DEPTH_CLAMP_ENABLE_EXT"; break;
    case VK_DYNAMIC_STATE_POLYGON_MODE_EXT: str = "POLYGON_MODE_EXT"; break;
    case VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT: str = "RASTERIZATION_SAMPLES_EXT"; break;
    case VK_DYNAMIC_STATE_SAMPLE_MASK_EXT: str = "SAMPLE_MASK_EXT"; break;
    case VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT: str = "ALPHA_TO_COVERAGE_ENABLE_EXT"; break;
    case VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT: str = "ALPHA_TO_ONE_ENABLE_EXT"; break;
    case VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT: str = "LOGIC_OP_ENABLE_EXT"; break;
    case VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT: str = "COLOR_BLEND_ENABLE_EXT"; break;
    case VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT: str = "COLOR_BLEND_EQUATION_EXT"; break;
    case VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT: str = "COLOR_WRITE_MASK_EXT"; break;
    case VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT: str = "TESSELLATION_DOMAIN_ORIGIN_EXT"; break;
    case VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT: str = "RASTERIZATION_STREAM_EXT"; break;
    case VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT: str = "CONSERVATIVE_RASTERIZATION_MODE_EXT"; break;
    case VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT: str = "EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT"; break;
    case VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT: str = "DEPTH_CLIP_ENABLE_EXT"; break;
    case VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT: str = "SAMPLE_LOCATIONS_ENABLE_EXT"; break;
    case VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT: str = "COLOR_BLEND_ADVANCED_EXT"; break;
    case VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT: str = "PROVOKING_VERTEX_MODE_EXT"; break;
    case VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT: str = "LINE_RASTERIZATION_MODE_EXT"; break;
    case VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT: str = "LINE_STIPPLE_ENABLE_EXT"; break;
    case VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT: str = "DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT"; break;
    case VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV: str = "VIEWPORT_W_SCALING_ENABLE_NV"; break;
    case VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV: str = "VIEWPORT_SWIZZLE_NV"; break;
    case VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV: str = "COVERAGE_TO_COLOR_ENABLE_NV"; break;
    case VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV: str = "COVERAGE_TO_COLOR_LOCATION_NV"; break;
    case VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV: str = "COVERAGE_MODULATION_MODE_NV"; break;
    case VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV: str = "COVERAGE_MODULATION_TABLE_ENABLE_NV"; break;
    case VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV: str = "COVERAGE_MODULATION_TABLE_NV"; break;
    case VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV: str = "SHADING_RATE_IMAGE_ENABLE_NV"; break;
    case VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV: str = "REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV"; break;
    case VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV: str = "COVERAGE_REDUCTION_MODE_NV"; break;
    case VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT: str = "ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT"; break;
    case VK_DYNAMIC_STATE_LINE_STIPPLE_KHR: str = "LINE_STIPPLE_KHR"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkFrontFace(VkFrontFace e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_FRONT_FACE_COUNTER_CLOCKWISE: str = "COUNTER_CLOCKWISE"; break;
    case VK_FRONT_FACE_CLOCKWISE: str = "CLOCKWISE"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkVertexInputRate(VkVertexInputRate e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_VERTEX_INPUT_RATE_VERTEX: str = "VERTEX"; break;
    case VK_VERTEX_INPUT_RATE_INSTANCE: str = "INSTANCE"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkPrimitiveTopology(VkPrimitiveTopology e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_PRIMITIVE_TOPOLOGY_POINT_LIST: str = "POINT_LIST"; break;
    case VK_PRIMITIVE_TOPOLOGY_LINE_LIST: str = "LINE_LIST"; break;
    case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP: str = "LINE_STRIP"; break;
    case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST: str = "TRIANGLE_LIST"; break;
    case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP: str = "TRIANGLE_STRIP"; break;
    case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN: str = "TRIANGLE_FAN"; break;
    case VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY: str = "LINE_LIST_WITH_ADJACENCY"; break;
    case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY: str = "LINE_STRIP_WITH_ADJACENCY"; break;
    case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY: str = "TRIANGLE_LIST_WITH_ADJACENCY"; break;
    case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY: str = "TRIANGLE_STRIP_WITH_ADJACENCY"; break;
    case VK_PRIMITIVE_TOPOLOGY_PATCH_LIST: str = "PATCH_LIST"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkPolygonMode(VkPolygonMode e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_POLYGON_MODE_FILL: str = "FILL"; break;
    case VK_POLYGON_MODE_LINE: str = "LINE"; break;
    case VK_POLYGON_MODE_POINT: str = "POINT"; break;
    case VK_POLYGON_MODE_FILL_RECTANGLE_NV: str = "FILL_RECTANGLE_NV"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkStencilOp(VkStencilOp e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_STENCIL_OP_KEEP: str = "KEEP"; break;
    case VK_STENCIL_OP_ZERO: str = "ZERO"; break;
    case VK_STENCIL_OP_REPLACE: str = "REPLACE"; break;
    case VK_STENCIL_OP_INCREMENT_AND_CLAMP: str = "INCREMENT_AND_CLAMP"; break;
    case VK_STENCIL_OP_DECREMENT_AND_CLAMP: str = "DECREMENT_AND_CLAMP"; break;
    case VK_STENCIL_OP_INVERT: str = "INVERT"; break;
    case VK_STENCIL_OP_INCREMENT_AND_WRAP: str = "INCREMENT_AND_WRAP"; break;
    case VK_STENCIL_OP_DECREMENT_AND_WRAP: str = "DECREMENT_AND_WRAP"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkLogicOp(VkLogicOp e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_LOGIC_OP_CLEAR: str = "CLEAR"; break;
    case VK_LOGIC_OP_AND: str = "AND"; break;
    case VK_LOGIC_OP_AND_REVERSE: str = "AND_REVERSE"; break;
    case VK_LOGIC_OP_COPY: str = "COPY"; break;
    case VK_LOGIC_OP_AND_INVERTED: str = "AND_INVERTED"; break;
    case VK_LOGIC_OP_NO_OP: str = "NO_OP"; break;
    case VK_LOGIC_OP_XOR: str = "XOR"; break;
    case VK_LOGIC_OP_OR: str = "OR"; break;
    case VK_LOGIC_OP_NOR: str = "NOR"; break;
    case VK_LOGIC_OP_EQUIVALENT: str = "EQUIVALENT"; break;
    case VK_LOGIC_OP_INVERT: str = "INVERT"; break;
    case VK_LOGIC_OP_OR_REVERSE: str = "OR_REVERSE"; break;
    case VK_LOGIC_OP_COPY_INVERTED: str = "COPY_INVERTED"; break;
    case VK_LOGIC_OP_OR_INVERTED: str = "OR_INVERTED"; break;
    case VK_LOGIC_OP_NAND: str = "NAND"; break;
    case VK_LOGIC_OP_SET: str = "SET"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkBorderColor(VkBorderColor e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK: str = "FLOAT_TRANSPARENT_BLACK"; break;
    case VK_BORDER_COLOR_INT_TRANSPARENT_BLACK: str = "INT_TRANSPARENT_BLACK"; break;
    case VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK: str = "FLOAT_OPAQUE_BLACK"; break;
    case VK_BORDER_COLOR_INT_OPAQUE_BLACK: str = "INT_OPAQUE_BLACK"; break;
    case VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE: str = "FLOAT_OPAQUE_WHITE"; break;
    case VK_BORDER_COLOR_INT_OPAQUE_WHITE: str = "INT_OPAQUE_WHITE"; break;
    case VK_BORDER_COLOR_FLOAT_CUSTOM_EXT: str = "FLOAT_CUSTOM_EXT"; break;
    case VK_BORDER_COLOR_INT_CUSTOM_EXT: str = "INT_CUSTOM_EXT"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkFilter(VkFilter e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_FILTER_NEAREST: str = "NEAREST"; break;
    case VK_FILTER_LINEAR: str = "LINEAR"; break;
    case VK_FILTER_CUBIC_EXT: str = "CUBIC_EXT"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkSamplerAddressMode(VkSamplerAddressMode e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_SAMPLER_ADDRESS_MODE_REPEAT: str = "REPEAT"; break;
    case VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT: str = "MIRRORED_REPEAT"; break;
    case VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE: str = "CLAMP_TO_EDGE"; break;
    case VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER: str = "CLAMP_TO_BORDER"; break;
    case VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE: str = "MIRROR_CLAMP_TO_EDGE"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkSamplerMipmapMode(VkSamplerMipmapMode e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_SAMPLER_MIPMAP_MODE_NEAREST: str = "NEAREST"; break;
    case VK_SAMPLER_MIPMAP_MODE_LINEAR: str = "LINEAR"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkDescriptorType(VkDescriptorType e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_DESCRIPTOR_TYPE_SAMPLER: str = "SAMPLER"; break;
    case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER: str = "COMBINED_IMAGE_SAMPLER"; break;
    case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE: str = "SAMPLED_IMAGE"; break;
    case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE: str = "STORAGE_IMAGE"; break;
    case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER: str = "UNIFORM_TEXEL_BUFFER"; break;
    case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER: str = "STORAGE_TEXEL_BUFFER"; break;
    case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER: str = "UNIFORM_BUFFER"; break;
    case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER: str = "STORAGE_BUFFER"; break;
    case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC: str = "UNIFORM_BUFFER_DYNAMIC"; break;
    case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC: str = "STORAGE_BUFFER_DYNAMIC"; break;
    case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT: str = "INPUT_ATTACHMENT"; break;
    case VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK: str = "INLINE_UNIFORM_BLOCK"; break;
    case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR: str = "ACCELERATION_STRUCTURE_KHR"; break;
    case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV: str = "ACCELERATION_STRUCTURE_NV"; break;
    case VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM: str = "SAMPLE_WEIGHT_IMAGE_QCOM"; break;
    case VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM: str = "BLOCK_MATCH_IMAGE_QCOM"; break;
    case VK_DESCRIPTOR_TYPE_MUTABLE_EXT: str = "MUTABLE_EXT"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkAttachmentLoadOp(VkAttachmentLoadOp e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_ATTACHMENT_LOAD_OP_LOAD: str = "LOAD"; break;
    case VK_ATTACHMENT_LOAD_OP_CLEAR: str = "CLEAR"; break;
    case VK_ATTACHMENT_LOAD_OP_DONT_CARE: str = "DONT_CARE"; break;
    case VK_ATTACHMENT_LOAD_OP_NONE_KHR: str = "NONE_KHR"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkAttachmentStoreOp(VkAttachmentStoreOp e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_ATTACHMENT_STORE_OP_STORE: str = "STORE"; break;
    case VK_ATTACHMENT_STORE_OP_DONT_CARE: str = "DONT_CARE"; break;
    case VK_ATTACHMENT_STORE_OP_NONE: str = "NONE"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkPipelineBindPoint(VkPipelineBindPoint e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_PIPELINE_BIND_POINT_GRAPHICS: str = "GRAPHICS"; break;
    case VK_PIPELINE_BIND_POINT_COMPUTE: str = "COMPUTE"; break;
#ifdef VK_ENABLE_BETA_EXTENSIONS
    case VK_PIPELINE_BIND_POINT_EXECUTION_GRAPH_AMDX: str = "EXECUTION_GRAPH_AMDX"; break;
#endif // VK_ENABLE_BETA_EXTENSIONS
    case VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR: str = "RAY_TRACING_KHR"; break;
    case VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI: str = "SUBPASS_SHADING_HUAWEI"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkCommandBufferLevel(VkCommandBufferLevel e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_COMMAND_BUFFER_LEVEL_PRIMARY: str = "PRIMARY"; break;
    case VK_COMMAND_BUFFER_LEVEL_SECONDARY: str = "SECONDARY"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkIndexType(VkIndexType e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_INDEX_TYPE_UINT16: str = "UINT16"; break;
    case VK_INDEX_TYPE_UINT32: str = "UINT32"; break;
    case VK_INDEX_TYPE_NONE_KHR: str = "NONE_KHR"; break;
    case VK_INDEX_TYPE_UINT8_KHR: str = "UINT8_KHR"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkSubpassContents(VkSubpassContents e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_SUBPASS_CONTENTS_INLINE: str = "INLINE"; break;
    case VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS: str = "SECONDARY_COMMAND_BUFFERS"; break;
    case VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_EXT: str = "INLINE_AND_SECONDARY_COMMAND_BUFFERS_EXT"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkPointClippingBehavior(VkPointClippingBehavior e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES: str = "ALL_CLIP_PLANES"; break;
    case VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY: str = "USER_CLIP_PLANES_ONLY"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkTessellationDomainOrigin(VkTessellationDomainOrigin e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT: str = "UPPER_LEFT"; break;
    case VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT: str = "LOWER_LEFT"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkSamplerYcbcrModelConversion(VkSamplerYcbcrModelConversion e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY: str = "RGB_IDENTITY"; break;
    case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY: str = "YCBCR_IDENTITY"; break;
    case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709: str = "YCBCR_709"; break;
    case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601: str = "YCBCR_601"; break;
    case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020: str = "YCBCR_2020"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkSamplerYcbcrRange(VkSamplerYcbcrRange e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_SAMPLER_YCBCR_RANGE_ITU_FULL: str = "ITU_FULL"; break;
    case VK_SAMPLER_YCBCR_RANGE_ITU_NARROW: str = "ITU_NARROW"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkChromaLocation(VkChromaLocation e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_CHROMA_LOCATION_COSITED_EVEN: str = "COSITED_EVEN"; break;
    case VK_CHROMA_LOCATION_MIDPOINT: str = "MIDPOINT"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkDescriptorUpdateTemplateType(VkDescriptorUpdateTemplateType e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET: str = "DESCRIPTOR_SET"; break;
    case VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR: str = "PUSH_DESCRIPTORS_KHR"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkDriverId(VkDriverId e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_DRIVER_ID_AMD_PROPRIETARY: str = "AMD_PROPRIETARY"; break;
    case VK_DRIVER_ID_AMD_OPEN_SOURCE: str = "AMD_OPEN_SOURCE"; break;
    case VK_DRIVER_ID_MESA_RADV: str = "MESA_RADV"; break;
    case VK_DRIVER_ID_NVIDIA_PROPRIETARY: str = "NVIDIA_PROPRIETARY"; break;
    case VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS: str = "INTEL_PROPRIETARY_WINDOWS"; break;
    case VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA: str = "INTEL_OPEN_SOURCE_MESA"; break;
    case VK_DRIVER_ID_IMAGINATION_PROPRIETARY: str = "IMAGINATION_PROPRIETARY"; break;
    case VK_DRIVER_ID_QUALCOMM_PROPRIETARY: str = "QUALCOMM_PROPRIETARY"; break;
    case VK_DRIVER_ID_ARM_PROPRIETARY: str = "ARM_PROPRIETARY"; break;
    case VK_DRIVER_ID_GOOGLE_SWIFTSHADER: str = "GOOGLE_SWIFTSHADER"; break;
    case VK_DRIVER_ID_GGP_PROPRIETARY: str = "GGP_PROPRIETARY"; break;
    case VK_DRIVER_ID_BROADCOM_PROPRIETARY: str = "BROADCOM_PROPRIETARY"; break;
    case VK_DRIVER_ID_MESA_LLVMPIPE: str = "MESA_LLVMPIPE"; break;
    case VK_DRIVER_ID_MOLTENVK: str = "MOLTENVK"; break;
    case VK_DRIVER_ID_COREAVI_PROPRIETARY: str = "COREAVI_PROPRIETARY"; break;
    case VK_DRIVER_ID_JUICE_PROPRIETARY: str = "JUICE_PROPRIETARY"; break;
    case VK_DRIVER_ID_VERISILICON_PROPRIETARY: str = "VERISILICON_PROPRIETARY"; break;
    case VK_DRIVER_ID_MESA_TURNIP: str = "MESA_TURNIP"; break;
    case VK_DRIVER_ID_MESA_V3DV: str = "MESA_V3DV"; break;
    case VK_DRIVER_ID_MESA_PANVK: str = "MESA_PANVK"; break;
    case VK_DRIVER_ID_SAMSUNG_PROPRIETARY: str = "SAMSUNG_PROPRIETARY"; break;
    case VK_DRIVER_ID_MESA_VENUS: str = "MESA_VENUS"; break;
    case VK_DRIVER_ID_MESA_DOZEN: str = "MESA_DOZEN"; break;
    case VK_DRIVER_ID_MESA_NVK: str = "MESA_NVK"; break;
    case VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA: str = "IMAGINATION_OPEN_SOURCE_MESA"; break;
    case VK_DRIVER_ID_MESA_AGXV: str = "MESA_AGXV"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkShaderFloatControlsIndependence(VkShaderFloatControlsIndependence e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY: str = "32_BIT_ONLY"; break;
    case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL: str = "ALL"; break;
    case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE: str = "NONE"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkSamplerReductionMode(VkSamplerReductionMode e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE: str = "WEIGHTED_AVERAGE"; break;
    case VK_SAMPLER_REDUCTION_MODE_MIN: str = "MIN"; break;
    case VK_SAMPLER_REDUCTION_MODE_MAX: str = "MAX"; break;
    case VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM: str = "WEIGHTED_AVERAGE_RANGECLAMP_QCOM"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkSemaphoreType(VkSemaphoreType e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_SEMAPHORE_TYPE_BINARY: str = "BINARY"; break;
    case VK_SEMAPHORE_TYPE_TIMELINE: str = "TIMELINE"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkPresentModeKHR(VkPresentModeKHR e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_PRESENT_MODE_IMMEDIATE_KHR: str = "VK_PRESENT_MODE_IMMEDIATE_KHR"; break;
    case VK_PRESENT_MODE_MAILBOX_KHR: str = "VK_PRESENT_MODE_MAILBOX_KHR"; break;
    case VK_PRESENT_MODE_FIFO_KHR: str = "VK_PRESENT_MODE_FIFO_KHR"; break;
    case VK_PRESENT_MODE_FIFO_RELAXED_KHR: str = "VK_PRESENT_MODE_FIFO_RELAXED_KHR"; break;
    case VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR: str = "VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR"; break;
    case VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR: str = "VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkColorSpaceKHR(VkColorSpaceKHR e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_COLOR_SPACE_SRGB_NONLINEAR_KHR: str = "VK_COLOR_SPACE_SRGB_NONLINEAR_KHR"; break;
    case VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT: str = "VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT"; break;
    case VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT: str = "VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT"; break;
    case VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT: str = "VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT"; break;
    case VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT: str = "VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT"; break;
    case VK_COLOR_SPACE_BT709_LINEAR_EXT: str = "VK_COLOR_SPACE_BT709_LINEAR_EXT"; break;
    case VK_COLOR_SPACE_BT709_NONLINEAR_EXT: str = "VK_COLOR_SPACE_BT709_NONLINEAR_EXT"; break;
    case VK_COLOR_SPACE_BT2020_LINEAR_EXT: str = "VK_COLOR_SPACE_BT2020_LINEAR_EXT"; break;
    case VK_COLOR_SPACE_HDR10_ST2084_EXT: str = "VK_COLOR_SPACE_HDR10_ST2084_EXT"; break;
    case VK_COLOR_SPACE_DOLBYVISION_EXT: str = "VK_COLOR_SPACE_DOLBYVISION_EXT"; break;
    case VK_COLOR_SPACE_HDR10_HLG_EXT: str = "VK_COLOR_SPACE_HDR10_HLG_EXT"; break;
    case VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT: str = "VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT"; break;
    case VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT: str = "VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT"; break;
    case VK_COLOR_SPACE_PASS_THROUGH_EXT: str = "VK_COLOR_SPACE_PASS_THROUGH_EXT"; break;
    case VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT: str = "VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT"; break;
    case VK_COLOR_SPACE_DISPLAY_NATIVE_AMD: str = "VK_COLOR_SPACE_DISPLAY_NATIVE_AMD"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkQueryResultStatusKHR(VkQueryResultStatusKHR e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_QUERY_RESULT_STATUS_ERROR_KHR: str = "VK_QUERY_RESULT_STATUS_ERROR_KHR"; break;
    case VK_QUERY_RESULT_STATUS_NOT_READY_KHR: str = "VK_QUERY_RESULT_STATUS_NOT_READY_KHR"; break;
    case VK_QUERY_RESULT_STATUS_COMPLETE_KHR: str = "VK_QUERY_RESULT_STATUS_COMPLETE_KHR"; break;
    case VK_QUERY_RESULT_STATUS_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_KHR:
        str = "VK_QUERY_RESULT_STATUS_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_KHR";
        break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkPerformanceCounterUnitKHR(VkPerformanceCounterUnitKHR e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR: str = "VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR"; break;
    case VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR: str = "VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR"; break;
    case VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR: str = "VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR"; break;
    case VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR: str = "VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR"; break;
    case VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR: str = "VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR"; break;
    case VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR: str = "VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR"; break;
    case VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR: str = "VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR"; break;
    case VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR: str = "VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR"; break;
    case VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR: str = "VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR"; break;
    case VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR: str = "VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR"; break;
    case VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR: str = "VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkPerformanceCounterScopeKHR(VkPerformanceCounterScopeKHR e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR: str = "VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR"; break;
    case VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR: str = "VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR"; break;
    case VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR: str = "VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkPerformanceCounterStorageKHR(VkPerformanceCounterStorageKHR e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR: str = "VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR"; break;
    case VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR: str = "VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR"; break;
    case VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR: str = "VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR"; break;
    case VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR: str = "VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR"; break;
    case VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR: str = "VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR"; break;
    case VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR: str = "VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkQueueGlobalPriorityKHR(VkQueueGlobalPriorityKHR e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR: str = "VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR"; break;
    case VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR: str = "VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR"; break;
    case VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR: str = "VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR"; break;
    case VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR: str = "VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkFragmentShadingRateCombinerOpKHR(VkFragmentShadingRateCombinerOpKHR e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR: str = "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR"; break;
    case VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR: str = "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR"; break;
    case VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR: str = "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR"; break;
    case VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR: str = "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR"; break;
    case VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR: str = "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkPipelineExecutableStatisticFormatKHR(VkPipelineExecutableStatisticFormatKHR e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR: str = "VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR"; break;
    case VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR: str = "VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR"; break;
    case VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR: str = "VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR"; break;
    case VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR:
        str = "VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR";
        break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkVideoEncodeTuningModeKHR(VkVideoEncodeTuningModeKHR e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_VIDEO_ENCODE_TUNING_MODE_DEFAULT_KHR: str = "VK_VIDEO_ENCODE_TUNING_MODE_DEFAULT_KHR"; break;
    case VK_VIDEO_ENCODE_TUNING_MODE_HIGH_QUALITY_KHR: str = "VK_VIDEO_ENCODE_TUNING_MODE_HIGH_QUALITY_KHR"; break;
    case VK_VIDEO_ENCODE_TUNING_MODE_LOW_LATENCY_KHR: str = "VK_VIDEO_ENCODE_TUNING_MODE_LOW_LATENCY_KHR"; break;
    case VK_VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR: str = "VK_VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR"; break;
    case VK_VIDEO_ENCODE_TUNING_MODE_LOSSLESS_KHR: str = "VK_VIDEO_ENCODE_TUNING_MODE_LOSSLESS_KHR"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkComponentTypeKHR(VkComponentTypeKHR e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_COMPONENT_TYPE_FLOAT16_KHR: str = "VK_COMPONENT_TYPE_FLOAT16_KHR"; break;
    case VK_COMPONENT_TYPE_FLOAT32_KHR: str = "VK_COMPONENT_TYPE_FLOAT32_KHR"; break;
    case VK_COMPONENT_TYPE_FLOAT64_KHR: str = "VK_COMPONENT_TYPE_FLOAT64_KHR"; break;
    case VK_COMPONENT_TYPE_SINT8_KHR: str = "VK_COMPONENT_TYPE_SINT8_KHR"; break;
    case VK_COMPONENT_TYPE_SINT16_KHR: str = "VK_COMPONENT_TYPE_SINT16_KHR"; break;
    case VK_COMPONENT_TYPE_SINT32_KHR: str = "VK_COMPONENT_TYPE_SINT32_KHR"; break;
    case VK_COMPONENT_TYPE_SINT64_KHR: str = "VK_COMPONENT_TYPE_SINT64_KHR"; break;
    case VK_COMPONENT_TYPE_UINT8_KHR: str = "VK_COMPONENT_TYPE_UINT8_KHR"; break;
    case VK_COMPONENT_TYPE_UINT16_KHR: str = "VK_COMPONENT_TYPE_UINT16_KHR"; break;
    case VK_COMPONENT_TYPE_UINT32_KHR: str = "VK_COMPONENT_TYPE_UINT32_KHR"; break;
    case VK_COMPONENT_TYPE_UINT64_KHR: str = "VK_COMPONENT_TYPE_UINT64_KHR"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkScopeKHR(VkScopeKHR e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_SCOPE_DEVICE_KHR: str = "VK_SCOPE_DEVICE_KHR"; break;
    case VK_SCOPE_WORKGROUP_KHR: str = "VK_SCOPE_WORKGROUP_KHR"; break;
    case VK_SCOPE_SUBGROUP_KHR: str = "VK_SCOPE_SUBGROUP_KHR"; break;
    case VK_SCOPE_QUEUE_FAMILY_KHR: str = "VK_SCOPE_QUEUE_FAMILY_KHR"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkLineRasterizationModeKHR(VkLineRasterizationModeKHR e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_LINE_RASTERIZATION_MODE_DEFAULT_KHR: str = "VK_LINE_RASTERIZATION_MODE_DEFAULT_KHR"; break;
    case VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR: str = "VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR"; break;
    case VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR: str = "VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR"; break;
    case VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR: str = "VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkTimeDomainKHR(VkTimeDomainKHR e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_TIME_DOMAIN_DEVICE_KHR: str = "VK_TIME_DOMAIN_DEVICE_KHR"; break;
    case VK_TIME_DOMAIN_CLOCK_MONOTONIC_KHR: str = "VK_TIME_DOMAIN_CLOCK_MONOTONIC_KHR"; break;
    case VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR: str = "VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR"; break;
    case VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR: str = "VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkDebugReportObjectTypeEXT(VkDebugReportObjectTypeEXT e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT: str = "VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT"; break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT: str = "VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT"; break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT: str = "VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT"; break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT: str = "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT"; break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT: str = "VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT"; break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT: str = "VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT"; break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT: str = "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT"; break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT: str = "VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT"; break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT: str = "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT"; break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT: str = "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT"; break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT: str = "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT"; break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT: str = "VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT"; break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT: str = "VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT"; break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT: str = "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT"; break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT: str = "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT"; break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT: str = "VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT"; break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT: str = "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT"; break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT: str = "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT"; break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT: str = "VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT"; break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT: str = "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT"; break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT:
        str = "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT";
        break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT: str = "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT"; break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT: str = "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT"; break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT: str = "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT"; break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT: str = "VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT"; break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT: str = "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT"; break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT: str = "VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT"; break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT: str = "VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT"; break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT:
        str = "VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT";
        break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT: str = "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT"; break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT: str = "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT"; break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT:
        str = "VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT";
        break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT:
        str = "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT";
        break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT:
        str = "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT";
        break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_CU_MODULE_NVX_EXT: str = "VK_DEBUG_REPORT_OBJECT_TYPE_CU_MODULE_NVX_EXT"; break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT: str = "VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT"; break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT:
        str = "VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT";
        break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT:
        str = "VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT";
        break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_CUDA_MODULE_NV_EXT: str = "VK_DEBUG_REPORT_OBJECT_TYPE_CUDA_MODULE_NV_EXT"; break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_CUDA_FUNCTION_NV_EXT: str = "VK_DEBUG_REPORT_OBJECT_TYPE_CUDA_FUNCTION_NV_EXT"; break;
    case VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT:
        str = "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT";
        break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkRasterizationOrderAMD(VkRasterizationOrderAMD e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_RASTERIZATION_ORDER_STRICT_AMD: str = "VK_RASTERIZATION_ORDER_STRICT_AMD"; break;
    case VK_RASTERIZATION_ORDER_RELAXED_AMD: str = "VK_RASTERIZATION_ORDER_RELAXED_AMD"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkShaderInfoTypeAMD(VkShaderInfoTypeAMD e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_SHADER_INFO_TYPE_STATISTICS_AMD: str = "VK_SHADER_INFO_TYPE_STATISTICS_AMD"; break;
    case VK_SHADER_INFO_TYPE_BINARY_AMD: str = "VK_SHADER_INFO_TYPE_BINARY_AMD"; break;
    case VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD: str = "VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkValidationCheckEXT(VkValidationCheckEXT e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_VALIDATION_CHECK_ALL_EXT: str = "VK_VALIDATION_CHECK_ALL_EXT"; break;
    case VK_VALIDATION_CHECK_SHADERS_EXT: str = "VK_VALIDATION_CHECK_SHADERS_EXT"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkPipelineRobustnessBufferBehaviorEXT(VkPipelineRobustnessBufferBehaviorEXT e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT:
        str = "VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT";
        break;
    case VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT:
        str = "VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT";
        break;
    case VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT:
        str = "VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT";
        break;
    case VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT:
        str = "VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT";
        break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkPipelineRobustnessImageBehaviorEXT(VkPipelineRobustnessImageBehaviorEXT e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT:
        str = "VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT";
        break;
    case VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT: str = "VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT"; break;
    case VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT:
        str = "VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT";
        break;
    case VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT:
        str = "VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT";
        break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkDisplayPowerStateEXT(VkDisplayPowerStateEXT e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_DISPLAY_POWER_STATE_OFF_EXT: str = "VK_DISPLAY_POWER_STATE_OFF_EXT"; break;
    case VK_DISPLAY_POWER_STATE_SUSPEND_EXT: str = "VK_DISPLAY_POWER_STATE_SUSPEND_EXT"; break;
    case VK_DISPLAY_POWER_STATE_ON_EXT: str = "VK_DISPLAY_POWER_STATE_ON_EXT"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkDeviceEventTypeEXT(VkDeviceEventTypeEXT e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT: str = "VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkDisplayEventTypeEXT(VkDisplayEventTypeEXT e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT: str = "VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkViewportCoordinateSwizzleNV(VkViewportCoordinateSwizzleNV e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV: str = "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV"; break;
    case VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV: str = "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV"; break;
    case VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV: str = "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV"; break;
    case VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV: str = "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV"; break;
    case VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV: str = "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV"; break;
    case VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV: str = "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV"; break;
    case VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV: str = "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV"; break;
    case VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV: str = "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkDiscardRectangleModeEXT(VkDiscardRectangleModeEXT e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT: str = "VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT"; break;
    case VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT: str = "VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkConservativeRasterizationModeEXT(VkConservativeRasterizationModeEXT e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT: str = "VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT"; break;
    case VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT:
        str = "VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT";
        break;
    case VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT:
        str = "VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT";
        break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkBlendOverlapEXT(VkBlendOverlapEXT e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_BLEND_OVERLAP_UNCORRELATED_EXT: str = "VK_BLEND_OVERLAP_UNCORRELATED_EXT"; break;
    case VK_BLEND_OVERLAP_DISJOINT_EXT: str = "VK_BLEND_OVERLAP_DISJOINT_EXT"; break;
    case VK_BLEND_OVERLAP_CONJOINT_EXT: str = "VK_BLEND_OVERLAP_CONJOINT_EXT"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkCoverageModulationModeNV(VkCoverageModulationModeNV e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_COVERAGE_MODULATION_MODE_NONE_NV: str = "VK_COVERAGE_MODULATION_MODE_NONE_NV"; break;
    case VK_COVERAGE_MODULATION_MODE_RGB_NV: str = "VK_COVERAGE_MODULATION_MODE_RGB_NV"; break;
    case VK_COVERAGE_MODULATION_MODE_ALPHA_NV: str = "VK_COVERAGE_MODULATION_MODE_ALPHA_NV"; break;
    case VK_COVERAGE_MODULATION_MODE_RGBA_NV: str = "VK_COVERAGE_MODULATION_MODE_RGBA_NV"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkValidationCacheHeaderVersionEXT(VkValidationCacheHeaderVersionEXT e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT: str = "VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkShadingRatePaletteEntryNV(VkShadingRatePaletteEntryNV e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV: str = "VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV"; break;
    case VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV:
        str = "VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV";
        break;
    case VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV:
        str = "VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV";
        break;
    case VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV:
        str = "VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV";
        break;
    case VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV:
        str = "VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV";
        break;
    case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV:
        str = "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV";
        break;
    case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV:
        str = "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV";
        break;
    case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV:
        str = "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV";
        break;
    case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV:
        str = "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV";
        break;
    case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV:
        str = "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV";
        break;
    case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV:
        str = "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV";
        break;
    case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV:
        str = "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV";
        break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkCoarseSampleOrderTypeNV(VkCoarseSampleOrderTypeNV e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV: str = "VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV"; break;
    case VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV: str = "VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV"; break;
    case VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV: str = "VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV"; break;
    case VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV: str = "VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkRayTracingShaderGroupTypeKHR(VkRayTracingShaderGroupTypeKHR e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR: str = "VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR"; break;
    case VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR:
        str = "VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR";
        break;
    case VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR:
        str = "VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR";
        break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkGeometryTypeKHR(VkGeometryTypeKHR e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_GEOMETRY_TYPE_TRIANGLES_KHR: str = "VK_GEOMETRY_TYPE_TRIANGLES_KHR"; break;
    case VK_GEOMETRY_TYPE_AABBS_KHR: str = "VK_GEOMETRY_TYPE_AABBS_KHR"; break;
    case VK_GEOMETRY_TYPE_INSTANCES_KHR: str = "VK_GEOMETRY_TYPE_INSTANCES_KHR"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkAccelerationStructureTypeKHR(VkAccelerationStructureTypeKHR e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR: str = "VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR"; break;
    case VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR: str = "VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR"; break;
    case VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR: str = "VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkCopyAccelerationStructureModeKHR(VkCopyAccelerationStructureModeKHR e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR: str = "VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR"; break;
    case VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR: str = "VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR"; break;
    case VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR: str = "VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR"; break;
    case VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR:
        str = "VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR";
        break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkAccelerationStructureMemoryRequirementsTypeNV(VkAccelerationStructureMemoryRequirementsTypeNV e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV:
        str = "VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV";
        break;
    case VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV:
        str = "VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV";
        break;
    case VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV:
        str = "VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV";
        break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkMemoryOverallocationBehaviorAMD(VkMemoryOverallocationBehaviorAMD e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD: str = "VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD"; break;
    case VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD: str = "VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD"; break;
    case VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD: str = "VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkPerformanceConfigurationTypeINTEL(VkPerformanceConfigurationTypeINTEL e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL:
        str = "VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL";
        break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkQueryPoolSamplingModeINTEL(VkQueryPoolSamplingModeINTEL e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL: str = "VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkPerformanceOverrideTypeINTEL(VkPerformanceOverrideTypeINTEL e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL: str = "VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL"; break;
    case VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL:
        str = "VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL";
        break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkPerformanceParameterTypeINTEL(VkPerformanceParameterTypeINTEL e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL:
        str = "VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL";
        break;
    case VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL:
        str = "VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL";
        break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkPerformanceValueTypeINTEL(VkPerformanceValueTypeINTEL e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL: str = "VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL"; break;
    case VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL: str = "VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL"; break;
    case VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL: str = "VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL"; break;
    case VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL: str = "VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL"; break;
    case VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL: str = "VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkValidationFeatureEnableEXT(VkValidationFeatureEnableEXT e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT: str = "VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT"; break;
    case VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT:
        str = "VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT";
        break;
    case VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT: str = "VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT"; break;
    case VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT: str = "VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT"; break;
    case VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT:
        str = "VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT";
        break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkValidationFeatureDisableEXT(VkValidationFeatureDisableEXT e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_VALIDATION_FEATURE_DISABLE_ALL_EXT: str = "VK_VALIDATION_FEATURE_DISABLE_ALL_EXT"; break;
    case VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT: str = "VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT"; break;
    case VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT: str = "VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT"; break;
    case VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT: str = "VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT"; break;
    case VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT: str = "VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT"; break;
    case VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT: str = "VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT"; break;
    case VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT: str = "VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT"; break;
    case VK_VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT:
        str = "VK_VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT";
        break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkCoverageReductionModeNV(VkCoverageReductionModeNV e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_COVERAGE_REDUCTION_MODE_MERGE_NV: str = "VK_COVERAGE_REDUCTION_MODE_MERGE_NV"; break;
    case VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV: str = "VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkProvokingVertexModeEXT(VkProvokingVertexModeEXT e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT: str = "VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT"; break;
    case VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT: str = "VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT"; break;
    default: break;
    }
    return std::move(str);
}

#ifdef VK_USE_PLATFORM_WIN32_KHR
String On_Str_VkFullScreenExclusiveEXT(VkFullScreenExclusiveEXT e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT: str = "VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT"; break;
    case VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT: str = "VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT"; break;
    case VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT: str = "VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT"; break;
    case VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT:
        str = "VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT";
        break;
    default: break;
    }
    return std::move(str);
}
#endif // VK_USE_PLATFORM_WIN32_KHR

String On_Str_VkIndirectCommandsTokenTypeNV(VkIndirectCommandsTokenTypeNV e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV: str = "VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV"; break;
    case VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV: str = "VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV"; break;
    case VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV: str = "VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV"; break;
    case VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV: str = "VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV"; break;
    case VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV: str = "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV"; break;
    case VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV: str = "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV"; break;
    case VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV: str = "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV"; break;
    case VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV: str = "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV"; break;
    case VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV: str = "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV"; break;
    case VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV: str = "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV"; break;
    case VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV: str = "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkDepthBiasRepresentationEXT(VkDepthBiasRepresentationEXT e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORMAT_EXT:
        str = "VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORMAT_EXT";
        break;
    case VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORCE_UNORM_EXT:
        str = "VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORCE_UNORM_EXT";
        break;
    case VK_DEPTH_BIAS_REPRESENTATION_FLOAT_EXT: str = "VK_DEPTH_BIAS_REPRESENTATION_FLOAT_EXT"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkDeviceMemoryReportEventTypeEXT(VkDeviceMemoryReportEventTypeEXT e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT: str = "VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT"; break;
    case VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT: str = "VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT"; break;
    case VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT: str = "VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT"; break;
    case VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT: str = "VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT"; break;
    case VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT:
        str = "VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT";
        break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkFragmentShadingRateTypeNV(VkFragmentShadingRateTypeNV e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV: str = "VK_FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV"; break;
    case VK_FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV: str = "VK_FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkFragmentShadingRateNV(VkFragmentShadingRateNV e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV: str = "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV"; break;
    case VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV:
        str = "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV";
        break;
    case VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV:
        str = "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV";
        break;
    case VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV:
        str = "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV";
        break;
    case VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV:
        str = "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV";
        break;
    case VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV:
        str = "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV";
        break;
    case VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV:
        str = "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV";
        break;
    case VK_FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV:
        str = "VK_FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV";
        break;
    case VK_FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV:
        str = "VK_FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV";
        break;
    case VK_FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV:
        str = "VK_FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV";
        break;
    case VK_FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV:
        str = "VK_FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV";
        break;
    case VK_FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV: str = "VK_FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkAccelerationStructureMotionInstanceTypeNV(VkAccelerationStructureMotionInstanceTypeNV e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV:
        str = "VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV";
        break;
    case VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV:
        str = "VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV";
        break;
    case VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV:
        str = "VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV";
        break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkDeviceFaultAddressTypeEXT(VkDeviceFaultAddressTypeEXT e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT: str = "VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT"; break;
    case VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT: str = "VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT"; break;
    case VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT: str = "VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT"; break;
    case VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT: str = "VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT"; break;
    case VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT:
        str = "VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT";
        break;
    case VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT:
        str = "VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT";
        break;
    case VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT:
        str = "VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT";
        break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkDeviceFaultVendorBinaryHeaderVersionEXT(VkDeviceFaultVendorBinaryHeaderVersionEXT e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT:
        str = "VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT";
        break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkDeviceAddressBindingTypeEXT(VkDeviceAddressBindingTypeEXT e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT: str = "VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT"; break;
    case VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT: str = "VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkMicromapTypeEXT(VkMicromapTypeEXT e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT: str = "VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT"; break;
#ifdef VK_ENABLE_BETA_EXTENSIONS
    case VK_MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV: str = "VK_MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV"; break;
#endif // VK_ENABLE_BETA_EXTENSIONS
    default: break;
    }
    return std::move(str);
}

String On_Str_VkBuildMicromapModeEXT(VkBuildMicromapModeEXT e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_BUILD_MICROMAP_MODE_BUILD_EXT: str = "VK_BUILD_MICROMAP_MODE_BUILD_EXT"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkCopyMicromapModeEXT(VkCopyMicromapModeEXT e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_COPY_MICROMAP_MODE_CLONE_EXT: str = "VK_COPY_MICROMAP_MODE_CLONE_EXT"; break;
    case VK_COPY_MICROMAP_MODE_SERIALIZE_EXT: str = "VK_COPY_MICROMAP_MODE_SERIALIZE_EXT"; break;
    case VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT: str = "VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT"; break;
    case VK_COPY_MICROMAP_MODE_COMPACT_EXT: str = "VK_COPY_MICROMAP_MODE_COMPACT_EXT"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkOpacityMicromapFormatEXT(VkOpacityMicromapFormatEXT e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT: str = "VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT"; break;
    case VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT: str = "VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkOpacityMicromapSpecialIndexEXT(VkOpacityMicromapSpecialIndexEXT e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT:
        str = "VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT";
        break;
    case VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT: str = "VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT"; break;
    case VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT:
        str = "VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT";
        break;
    case VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT:
        str = "VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT";
        break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkAccelerationStructureCompatibilityKHR(VkAccelerationStructureCompatibilityKHR e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR:
        str = "VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR";
        break;
    case VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR:
        str = "VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR";
        break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkAccelerationStructureBuildTypeKHR(VkAccelerationStructureBuildTypeKHR e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR: str = "VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR"; break;
    case VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR: str = "VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR"; break;
    case VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR:
        str = "VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR";
        break;
    default: break;
    }
    return std::move(str);
}

#ifdef VK_ENABLE_BETA_EXTENSIONS
String On_Str_VkDisplacementMicromapFormatNV(VkDisplacementMicromapFormatNV e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_DISPLACEMENT_MICROMAP_FORMAT_64_TRIANGLES_64_BYTES_NV:
        str = "VK_DISPLACEMENT_MICROMAP_FORMAT_64_TRIANGLES_64_BYTES_NV";
        break;
    case VK_DISPLACEMENT_MICROMAP_FORMAT_256_TRIANGLES_128_BYTES_NV:
        str = "VK_DISPLACEMENT_MICROMAP_FORMAT_256_TRIANGLES_128_BYTES_NV";
        break;
    case VK_DISPLACEMENT_MICROMAP_FORMAT_1024_TRIANGLES_128_BYTES_NV:
        str = "VK_DISPLACEMENT_MICROMAP_FORMAT_1024_TRIANGLES_128_BYTES_NV";
        break;
    default: break;
    }
    return std::move(str);
}
#endif // VK_ENABLE_BETA_EXTENSIONS

String On_Str_VkSubpassMergeStatusEXT(VkSubpassMergeStatusEXT e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_SUBPASS_MERGE_STATUS_MERGED_EXT: str = "VK_SUBPASS_MERGE_STATUS_MERGED_EXT"; break;
    case VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT: str = "VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT"; break;
    case VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT:
        str = "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT";
        break;
    case VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT:
        str = "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT";
        break;
    case VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT:
        str = "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT";
        break;
    case VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT: str = "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT"; break;
    case VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT:
        str = "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT";
        break;
    case VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT:
        str = "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT";
        break;
    case VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT:
        str = "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT";
        break;
    case VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT:
        str = "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT";
        break;
    case VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT:
        str = "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT";
        break;
    case VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT:
        str = "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT";
        break;
    case VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT:
        str = "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT";
        break;
    case VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT: str = "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkDirectDriverLoadingModeLUNARG(VkDirectDriverLoadingModeLUNARG e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG: str = "VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG"; break;
    case VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG: str = "VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkOpticalFlowPerformanceLevelNV(VkOpticalFlowPerformanceLevelNV e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV: str = "VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV"; break;
    case VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV: str = "VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV"; break;
    case VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV: str = "VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV"; break;
    case VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV: str = "VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkOpticalFlowSessionBindingPointNV(VkOpticalFlowSessionBindingPointNV e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV: str = "VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV"; break;
    case VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV: str = "VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV"; break;
    case VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV: str = "VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV"; break;
    case VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV: str = "VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV"; break;
    case VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV:
        str = "VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV";
        break;
    case VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV:
        str = "VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV";
        break;
    case VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV: str = "VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV"; break;
    case VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV:
        str = "VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV";
        break;
    case VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV:
        str = "VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV";
        break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkShaderCodeTypeEXT(VkShaderCodeTypeEXT e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_SHADER_CODE_TYPE_BINARY_EXT: str = "VK_SHADER_CODE_TYPE_BINARY_EXT"; break;
    case VK_SHADER_CODE_TYPE_SPIRV_EXT: str = "VK_SHADER_CODE_TYPE_SPIRV_EXT"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkRayTracingInvocationReorderModeNV(VkRayTracingInvocationReorderModeNV e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV: str = "VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV"; break;
    case VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV: str = "VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkLayerSettingTypeEXT(VkLayerSettingTypeEXT e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_LAYER_SETTING_TYPE_BOOL32_EXT: str = "VK_LAYER_SETTING_TYPE_BOOL32_EXT"; break;
    case VK_LAYER_SETTING_TYPE_INT32_EXT: str = "VK_LAYER_SETTING_TYPE_INT32_EXT"; break;
    case VK_LAYER_SETTING_TYPE_INT64_EXT: str = "VK_LAYER_SETTING_TYPE_INT64_EXT"; break;
    case VK_LAYER_SETTING_TYPE_UINT32_EXT: str = "VK_LAYER_SETTING_TYPE_UINT32_EXT"; break;
    case VK_LAYER_SETTING_TYPE_UINT64_EXT: str = "VK_LAYER_SETTING_TYPE_UINT64_EXT"; break;
    case VK_LAYER_SETTING_TYPE_FLOAT32_EXT: str = "VK_LAYER_SETTING_TYPE_FLOAT32_EXT"; break;
    case VK_LAYER_SETTING_TYPE_FLOAT64_EXT: str = "VK_LAYER_SETTING_TYPE_FLOAT64_EXT"; break;
    case VK_LAYER_SETTING_TYPE_STRING_EXT: str = "VK_LAYER_SETTING_TYPE_STRING_EXT"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkLatencyMarkerNV(VkLatencyMarkerNV e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_LATENCY_MARKER_SIMULATION_START_NV: str = "VK_LATENCY_MARKER_SIMULATION_START_NV"; break;
    case VK_LATENCY_MARKER_SIMULATION_END_NV: str = "VK_LATENCY_MARKER_SIMULATION_END_NV"; break;
    case VK_LATENCY_MARKER_RENDERSUBMIT_START_NV: str = "VK_LATENCY_MARKER_RENDERSUBMIT_START_NV"; break;
    case VK_LATENCY_MARKER_RENDERSUBMIT_END_NV: str = "VK_LATENCY_MARKER_RENDERSUBMIT_END_NV"; break;
    case VK_LATENCY_MARKER_PRESENT_START_NV: str = "VK_LATENCY_MARKER_PRESENT_START_NV"; break;
    case VK_LATENCY_MARKER_PRESENT_END_NV: str = "VK_LATENCY_MARKER_PRESENT_END_NV"; break;
    case VK_LATENCY_MARKER_INPUT_SAMPLE_NV: str = "VK_LATENCY_MARKER_INPUT_SAMPLE_NV"; break;
    case VK_LATENCY_MARKER_TRIGGER_FLASH_NV: str = "VK_LATENCY_MARKER_TRIGGER_FLASH_NV"; break;
    case VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_START_NV:
        str = "VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_START_NV";
        break;
    case VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_END_NV: str = "VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_END_NV"; break;
    case VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_START_NV: str = "VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_START_NV"; break;
    case VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_END_NV: str = "VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_END_NV"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkOutOfBandQueueTypeNV(VkOutOfBandQueueTypeNV e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_OUT_OF_BAND_QUEUE_TYPE_RENDER_NV: str = "VK_OUT_OF_BAND_QUEUE_TYPE_RENDER_NV"; break;
    case VK_OUT_OF_BAND_QUEUE_TYPE_PRESENT_NV: str = "VK_OUT_OF_BAND_QUEUE_TYPE_PRESENT_NV"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkBlockMatchWindowCompareModeQCOM(VkBlockMatchWindowCompareModeQCOM e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MIN_QCOM: str = "VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MIN_QCOM"; break;
    case VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_QCOM: str = "VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_QCOM"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkCubicFilterWeightsQCOM(VkCubicFilterWeightsQCOM e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM: str = "VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM"; break;
    case VK_CUBIC_FILTER_WEIGHTS_ZERO_TANGENT_CARDINAL_QCOM: str = "VK_CUBIC_FILTER_WEIGHTS_ZERO_TANGENT_CARDINAL_QCOM"; break;
    case VK_CUBIC_FILTER_WEIGHTS_B_SPLINE_QCOM: str = "VK_CUBIC_FILTER_WEIGHTS_B_SPLINE_QCOM"; break;
    case VK_CUBIC_FILTER_WEIGHTS_MITCHELL_NETRAVALI_QCOM: str = "VK_CUBIC_FILTER_WEIGHTS_MITCHELL_NETRAVALI_QCOM"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkLayeredDriverUnderlyingApiMSFT(VkLayeredDriverUnderlyingApiMSFT e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_LAYERED_DRIVER_UNDERLYING_API_NONE_MSFT: str = "VK_LAYERED_DRIVER_UNDERLYING_API_NONE_MSFT"; break;
    case VK_LAYERED_DRIVER_UNDERLYING_API_D3D12_MSFT: str = "VK_LAYERED_DRIVER_UNDERLYING_API_D3D12_MSFT"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkBuildAccelerationStructureModeKHR(VkBuildAccelerationStructureModeKHR e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR: str = "VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR"; break;
    case VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR: str = "VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR"; break;
    default: break;
    }
    return std::move(str);
}

String On_Str_VkShaderGroupShaderKHR(VkShaderGroupShaderKHR e) {
    String str = "Unknown " + std::to_string(e);
    switch (e) {
    case VK_SHADER_GROUP_SHADER_GENERAL_KHR: str = "VK_SHADER_GROUP_SHADER_GENERAL_KHR"; break;
    case VK_SHADER_GROUP_SHADER_CLOSEST_HIT_KHR: str = "VK_SHADER_GROUP_SHADER_CLOSEST_HIT_KHR"; break;
    case VK_SHADER_GROUP_SHADER_ANY_HIT_KHR: str = "VK_SHADER_GROUP_SHADER_ANY_HIT_KHR"; break;
    case VK_SHADER_GROUP_SHADER_INTERSECTION_KHR: str = "VK_SHADER_GROUP_SHADER_INTERSECTION_KHR"; break;
    default: break;
    }
    return std::move(str);
}

// Flags

String On_Str_VkAccessFlags(VkAccessFlags f) {
    String str = "|";
    if (f & VK_ACCESS_INDIRECT_COMMAND_READ_BIT) {
        str += "INDIRECT_COMMAND_READ|";
    }
    if (f & VK_ACCESS_INDEX_READ_BIT) {
        str += "INDEX_READ|";
    }
    if (f & VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT) {
        str += "VERTEX_ATTRIBUTE_READ|";
    }
    if (f & VK_ACCESS_UNIFORM_READ_BIT) {
        str += "UNIFORM_READ|";
    }
    if (f & VK_ACCESS_INPUT_ATTACHMENT_READ_BIT) {
        str += "INPUT_ATTACHMENT_READ|";
    }
    if (f & VK_ACCESS_SHADER_READ_BIT) {
        str += "SHADER_READ|";
    }
    if (f & VK_ACCESS_SHADER_WRITE_BIT) {
        str += "SHADER_WRITE|";
    }
    if (f & VK_ACCESS_COLOR_ATTACHMENT_READ_BIT) {
        str += "COLOR_ATTACHMENT_READ|";
    }
    if (f & VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT) {
        str += "COLOR_ATTACHMENT_WRITE|";
    }
    if (f & VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT) {
        str += "DEPTH_STENCIL_ATTACHMENT_READ|";
    }
    if (f & VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT) {
        str += "DEPTH_STENCIL_ATTACHMENT_WRITE|";
    }
    if (f & VK_ACCESS_TRANSFER_READ_BIT) {
        str += "TRANSFER_READ|";
    }
    if (f & VK_ACCESS_TRANSFER_WRITE_BIT) {
        str += "TRANSFER_WRITE|";
    }
    if (f & VK_ACCESS_HOST_READ_BIT) {
        str += "HOST_READ|";
    }
    if (f & VK_ACCESS_HOST_WRITE_BIT) {
        str += "HOST_WRITE|";
    }
    if (f & VK_ACCESS_MEMORY_READ_BIT) {
        str += "MEMORY_READ|";
    }
    if (f & VK_ACCESS_MEMORY_WRITE_BIT) {
        str += "MEMORY_WRITE|";
    }
    if (f & VK_ACCESS_NONE) {
        str += "NONE|";
    }
    if (f & VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT) {
        str += "TRANSFORM_FEEDBACK_WRITE|";
    }
    if (f & VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT) {
        str += "TRANSFORM_FEEDBACK_COUNTER_READ|";
    }
    if (f & VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT) {
        str += "TRANSFORM_FEEDBACK_COUNTER_WRITE|";
    }
    if (f & VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT) {
        str += "CONDITIONAL_RENDERING_READ|";
    }
    if (f & VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT) {
        str += "COLOR_ATTACHMENT_READ_NONCOHERENT|";
    }
    if (f & VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR) {
        str += "ACCELERATION_STRUCTURE_READ|";
    }
    if (f & VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR) {
        str += "ACCELERATION_STRUCTURE_WRITE|";
    }
    if (f & VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT) {
        str += "FRAGMENT_DENSITY_MAP_READ|";
    }
    if (f & VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR) {
        str += "FRAGMENT_SHADING_RATE_ATTACHMENT_READ|";
    }
    if (f & VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV) {
        str += "COMMAND_PREPROCESS_READ|";
    }
    if (f & VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV) {
        str += "COMMAND_PREPROCESS_WRITE|";
    }
    return std::move(str);
}

String On_Str_VkImageAspectFlags(VkImageAspectFlags f) {
    String str = "|";
    if (f & VK_IMAGE_ASPECT_COLOR_BIT) {
        str += "COLOR|";
    }
    if (f & VK_IMAGE_ASPECT_DEPTH_BIT) {
        str += "DEPTH|";
    }
    if (f & VK_IMAGE_ASPECT_STENCIL_BIT) {
        str += "STENCIL|";
    }
    if (f & VK_IMAGE_ASPECT_METADATA_BIT) {
        str += "METADATA|";
    }
    if (f & VK_IMAGE_ASPECT_PLANE_0_BIT) {
        str += "PLANE_0|";
    }
    if (f & VK_IMAGE_ASPECT_PLANE_1_BIT) {
        str += "PLANE_1|";
    }
    if (f & VK_IMAGE_ASPECT_PLANE_2_BIT) {
        str += "PLANE_2|";
    }
    if (f & VK_IMAGE_ASPECT_NONE) {
        str += "NONE|";
    }
    if (f & VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT) {
        str += "MEMORY_PLANE_0|";
    }
    if (f & VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT) {
        str += "MEMORY_PLANE_1|";
    }
    if (f & VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT) {
        str += "MEMORY_PLANE_2|";
    }
    if (f & VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT) {
        str += "MEMORY_PLANE_3|";
    }
    return std::move(str);
}

String On_Str_VkFormatFeatureFlags(VkFormatFeatureFlags f) {
    String str = "|";
    if (f & VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT) {
        str += "SAMPLED_IMAGE|";
    }
    if (f & VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT) {
        str += "STORAGE_IMAGE|";
    }
    if (f & VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT) {
        str += "STORAGE_IMAGE_ATOMIC|";
    }
    if (f & VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT) {
        str += "UNIFORM_TEXEL_BUFFER|";
    }
    if (f & VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT) {
        str += "STORAGE_TEXEL_BUFFER|";
    }
    if (f & VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT) {
        str += "STORAGE_TEXEL_BUFFER_ATOMIC|";
    }
    if (f & VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT) {
        str += "VERTEX_BUFFER|";
    }
    if (f & VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT) {
        str += "COLOR_ATTACHMENT|";
    }
    if (f & VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT) {
        str += "COLOR_ATTACHMENT_BLEND|";
    }
    if (f & VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT) {
        str += "DEPTH_STENCIL_ATTACHMENT|";
    }
    if (f & VK_FORMAT_FEATURE_BLIT_SRC_BIT) {
        str += "BLIT_SRC|";
    }
    if (f & VK_FORMAT_FEATURE_BLIT_DST_BIT) {
        str += "BLIT_DST|";
    }
    if (f & VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT) {
        str += "SAMPLED_IMAGE_FILTER_LINEAR|";
    }
    if (f & VK_FORMAT_FEATURE_TRANSFER_SRC_BIT) {
        str += "TRANSFER_SRC|";
    }
    if (f & VK_FORMAT_FEATURE_TRANSFER_DST_BIT) {
        str += "TRANSFER_DST|";
    }
    if (f & VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT) {
        str += "MIDPOINT_CHROMA_SAMPLES|";
    }
    if (f & VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT) {
        str += "SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER|";
    }
    if (f & VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT) {
        str += "SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER|";
    }
    if (f & VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT) {
        str += "SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT|";
    }
    if (f & VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT) {
        str += "SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE|";
    }
    if (f & VK_FORMAT_FEATURE_DISJOINT_BIT) {
        str += "DISJOINT|";
    }
    if (f & VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT) {
        str += "COSITED_CHROMA_SAMPLES|";
    }
    if (f & VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT) {
        str += "SAMPLED_IMAGE_FILTER_MINMAX|";
    }
    if (f & VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR) {
        str += "VIDEO_DECODE_OUTPUT|";
    }
    if (f & VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR) {
        str += "VIDEO_DECODE_DPB|";
    }
    if (f & VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) {
        str += "ACCELERATION_STRUCTURE_VERTEX_BUFFER|";
    }
    if (f & VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT) {
        str += "SAMPLED_IMAGE_FILTER_CUBIC|";
    }
    if (f & VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT) {
        str += "FRAGMENT_DENSITY_MAP|";
    }
    if (f & VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR) {
        str += "FRAGMENT_SHADING_RATE_ATTACHMENT|";
    }
    if (f & VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR) {
        str += "VIDEO_ENCODE_INPUT|";
    }
    if (f & VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR) {
        str += "VIDEO_ENCODE_DPB|";
    }
    return std::move(str);
}

String On_Str_VkImageCreateFlags(VkImageCreateFlags f) {
    String str = "|";
    if (f & VK_IMAGE_CREATE_SPARSE_BINDING_BIT) {
        str += "SPARSE_BINDING|";
    }
    if (f & VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT) {
        str += "SPARSE_RESIDENCY|";
    }
    if (f & VK_IMAGE_CREATE_SPARSE_ALIASED_BIT) {
        str += "SPARSE_ALIASED|";
    }
    if (f & VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT) {
        str += "MUTABLE_FORMAT|";
    }
    if (f & VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT) {
        str += "CUBE_COMPATIBLE|";
    }
    if (f & VK_IMAGE_CREATE_ALIAS_BIT) {
        str += "ALIAS|";
    }
    if (f & VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT) {
        str += "SPLIT_INSTANCE_BIND_REGIONS|";
    }
    if (f & VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT) {
        str += "2D_ARRAY_COMPATIBLE|";
    }
    if (f & VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT) {
        str += "BLOCK_TEXEL_VIEW_COMPATIBLE|";
    }
    if (f & VK_IMAGE_CREATE_EXTENDED_USAGE_BIT) {
        str += "EXTENDED_USAGE|";
    }
    if (f & VK_IMAGE_CREATE_PROTECTED_BIT) {
        str += "PROTECTED|";
    }
    if (f & VK_IMAGE_CREATE_DISJOINT_BIT) {
        str += "DISJOINT|";
    }
    if (f & VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV) {
        str += "CORNER_SAMPLED|";
    }
    if (f & VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT) {
        str += "SAMPLE_LOCATIONS_COMPATIBLE_DEPTH|";
    }
    if (f & VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT) {
        str += "SUBSAMPLED|";
    }
    if (f & VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT) {
        str += "DESCRIPTOR_BUFFER_CAPTURE_REPLAY|";
    }
    if (f & VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT) {
        str += "MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED|";
    }
    if (f & VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT) {
        str += "2D_VIEW_COMPATIBLE|";
    }
    if (f & VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM) {
        str += "FRAGMENT_DENSITY_MAP_OFFSET|";
    }
    if (f & VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR) {
        str += "VIDEO_PROFILE_INDEPENDENT|";
    }
    return std::move(str);
}

String On_Str_VkSampleCountFlags(VkSampleCountFlags f) {
    String str = "|";
    if (f & VK_SAMPLE_COUNT_1_BIT) {
        str += "1|";
    }
    if (f & VK_SAMPLE_COUNT_2_BIT) {
        str += "2|";
    }
    if (f & VK_SAMPLE_COUNT_4_BIT) {
        str += "4|";
    }
    if (f & VK_SAMPLE_COUNT_8_BIT) {
        str += "8|";
    }
    if (f & VK_SAMPLE_COUNT_16_BIT) {
        str += "16|";
    }
    if (f & VK_SAMPLE_COUNT_32_BIT) {
        str += "32|";
    }
    if (f & VK_SAMPLE_COUNT_64_BIT) {
        str += "64|";
    }
    return std::move(str);
}

String On_Str_VkImageUsageFlags(VkImageUsageFlags f) {
    String str = "|";
    if (f & VK_IMAGE_USAGE_TRANSFER_SRC_BIT) {
        str += "TRANSFER_SRC|";
    }
    if (f & VK_IMAGE_USAGE_TRANSFER_DST_BIT) {
        str += "TRANSFER_DST|";
    }
    if (f & VK_IMAGE_USAGE_SAMPLED_BIT) {
        str += "SAMPLED|";
    }
    if (f & VK_IMAGE_USAGE_STORAGE_BIT) {
        str += "STORAGE|";
    }
    if (f & VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT) {
        str += "COLOR_ATTACHMENT|";
    }
    if (f & VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT) {
        str += "DEPTH_STENCIL_ATTACHMENT|";
    }
    if (f & VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT) {
        str += "TRANSIENT_ATTACHMENT|";
    }
    if (f & VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT) {
        str += "INPUT_ATTACHMENT|";
    }
    if (f & VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR) {
        str += "VIDEO_DECODE_DST|";
    }
    if (f & VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR) {
        str += "VIDEO_DECODE_SRC|";
    }
    if (f & VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR) {
        str += "VIDEO_DECODE_DPB|";
    }
    if (f & VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT) {
        str += "FRAGMENT_DENSITY_MAP|";
    }
    if (f & VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR) {
        str += "FRAGMENT_SHADING_RATE_ATTACHMENT|";
    }
    if (f & VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT) {
        str += "HOST_TRANSFER|";
    }
    if (f & VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR) {
        str += "VIDEO_ENCODE_DST|";
    }
    if (f & VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR) {
        str += "VIDEO_ENCODE_SRC|";
    }
    if (f & VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR) {
        str += "VIDEO_ENCODE_DPB|";
    }
    if (f & VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT) {
        str += "ATTACHMENT_FEEDBACK_LOOP|";
    }
    if (f & VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI) {
        str += "INVOCATION_MASK|";
    }
    if (f & VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM) {
        str += "SAMPLE_WEIGHT|";
    }
    if (f & VK_IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM) {
        str += "SAMPLE_BLOCK_MATCH|";
    }
    return std::move(str);
}

String On_Str_VkInstanceCreateFlags(VkInstanceCreateFlags f) {
    String str = "|";
    if (f & VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR) {
        str += "ENUMERATE_PORTABILITY|";
    }
    return std::move(str);
}

String On_Str_VkMemoryHeapFlags(VkMemoryHeapFlags f) {
    String str = "|";
    if (f & VK_MEMORY_HEAP_DEVICE_LOCAL_BIT) {
        str += "DEVICE_LOCAL|";
    }
    if (f & VK_MEMORY_HEAP_MULTI_INSTANCE_BIT) {
        str += "MULTI_INSTANCE|";
    }
    return std::move(str);
}

String On_Str_VkMemoryPropertyFlags(VkMemoryPropertyFlags f) {
    String str = "|";
    if (f & VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT) {
        str += "DEVICE_LOCAL|";
    }
    if (f & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT) {
        str += "HOST_VISIBLE|";
    }
    if (f & VK_MEMORY_PROPERTY_HOST_COHERENT_BIT) {
        str += "HOST_COHERENT|";
    }
    if (f & VK_MEMORY_PROPERTY_HOST_CACHED_BIT) {
        str += "HOST_CACHED|";
    }
    if (f & VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT) {
        str += "LAZILY_ALLOCATED|";
    }
    if (f & VK_MEMORY_PROPERTY_PROTECTED_BIT) {
        str += "PROTECTED|";
    }
    if (f & VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD) {
        str += "DEVICE_COHERENT|";
    }
    if (f & VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD) {
        str += "DEVICE_UNCACHED|";
    }
    if (f & VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV) {
        str += "RDMA_CAPABLE|";
    }
    return std::move(str);
}

String On_Str_VkQueueFlags(VkQueueFlags f) {
    String str = "|";
    if (f & VK_QUEUE_GRAPHICS_BIT) {
        str += "GRAPHICS|";
    }
    if (f & VK_QUEUE_COMPUTE_BIT) {
        str += "COMPUTE|";
    }
    if (f & VK_QUEUE_TRANSFER_BIT) {
        str += "TRANSFER|";
    }
    if (f & VK_QUEUE_SPARSE_BINDING_BIT) {
        str += "SPARSE_BINDING|";
    }
    if (f & VK_QUEUE_PROTECTED_BIT) {
        str += "PROTECTED|";
    }
    if (f & VK_QUEUE_VIDEO_DECODE_BIT_KHR) {
        str += "VIDEO_DECODE|";
    }
    if (f & VK_QUEUE_VIDEO_ENCODE_BIT_KHR) {
        str += "VIDEO_ENCODE|";
    }
    if (f & VK_QUEUE_OPTICAL_FLOW_BIT_NV) {
        str += "OPTICAL_FLOW|";
    }
    return std::move(str);
}

String On_Str_VkDeviceQueueCreateFlags(VkDeviceQueueCreateFlags f) {
    String str = "|";
    if (f & VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT) {
        str += "PROTECTED|";
    }
    return std::move(str);
}

String On_Str_VkPipelineStageFlags(VkPipelineStageFlags f) {
    String str = "|";
    if (f & VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT) {
        str += "TOP_OF_PIPE|";
    }
    if (f & VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT) {
        str += "DRAW_INDIRECT|";
    }
    if (f & VK_PIPELINE_STAGE_VERTEX_INPUT_BIT) {
        str += "VERTEX_INPUT|";
    }
    if (f & VK_PIPELINE_STAGE_VERTEX_SHADER_BIT) {
        str += "VERTEX_SHADER|";
    }
    if (f & VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT) {
        str += "TESSELLATION_CONTROL_SHADER|";
    }
    if (f & VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT) {
        str += "TESSELLATION_EVALUATION_SHADER|";
    }
    if (f & VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT) {
        str += "GEOMETRY_SHADER|";
    }
    if (f & VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT) {
        str += "FRAGMENT_SHADER|";
    }
    if (f & VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT) {
        str += "EARLY_FRAGMENT_TESTS|";
    }
    if (f & VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT) {
        str += "LATE_FRAGMENT_TESTS|";
    }
    if (f & VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT) {
        str += "COLOR_ATTACHMENT_OUTPUT|";
    }
    if (f & VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT) {
        str += "COMPUTE_SHADER|";
    }
    if (f & VK_PIPELINE_STAGE_TRANSFER_BIT) {
        str += "TRANSFER|";
    }
    if (f & VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT) {
        str += "BOTTOM_OF_PIPE|";
    }
    if (f & VK_PIPELINE_STAGE_HOST_BIT) {
        str += "HOST|";
    }
    if (f & VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT) {
        str += "ALL_GRAPHICS|";
    }
    if (f & VK_PIPELINE_STAGE_ALL_COMMANDS_BIT) {
        str += "ALL_COMMANDS|";
    }
    if (f & VK_PIPELINE_STAGE_NONE) {
        str += "NONE|";
    }
    if (f & VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT) {
        str += "TRANSFORM_FEEDBACK|";
    }
    if (f & VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT) {
        str += "CONDITIONAL_RENDERING|";
    }
    if (f & VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR) {
        str += "ACCELERATION_STRUCTURE_BUILD|";
    }
    if (f & VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR) {
        str += "RAY_TRACING_SHADER|";
    }
    if (f & VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT) {
        str += "FRAGMENT_DENSITY_PROCESS|";
    }
    if (f & VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR) {
        str += "FRAGMENT_SHADING_RATE_ATTACHMENT|";
    }
    if (f & VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV) {
        str += "COMMAND_PREPROCESS|";
    }
    if (f & VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT) {
        str += "TASK_SHADER|";
    }
    if (f & VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT) {
        str += "MESH_SHADER|";
    }
    return std::move(str);
}

String On_Str_VkMemoryMapFlags(VkMemoryMapFlags f) {
    String str = "|";
    if (f & VK_MEMORY_MAP_PLACED_BIT_EXT) {
        str += "PLACED|";
    }
    return std::move(str);
}

String On_Str_VkSparseMemoryBindFlags(VkSparseMemoryBindFlags f) {
    String str = "|";
    if (f & VK_SPARSE_MEMORY_BIND_METADATA_BIT) {
        str += "METADATA|";
    }
    return std::move(str);
}

String On_Str_VkSparseImageFormatFlags(VkSparseImageFormatFlags f) {
    String str = "|";
    if (f & VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT) {
        str += "SINGLE_MIPTAIL|";
    }
    if (f & VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT) {
        str += "ALIGNED_MIP_SIZE|";
    }
    if (f & VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT) {
        str += "NONSTANDARD_BLOCK_SIZE|";
    }
    return std::move(str);
}

String On_Str_VkFenceCreateFlags(VkFenceCreateFlags f) {
    String str = "|";
    if (f & VK_FENCE_CREATE_SIGNALED_BIT) {
        str += "SIGNALED|";
    }
    return std::move(str);
}

String On_Str_VkEventCreateFlags(VkEventCreateFlags f) {
    String str = "|";
    if (f & VK_EVENT_CREATE_DEVICE_ONLY_BIT) {
        str += "DEVICE_ONLY|";
    }
    return std::move(str);
}

String On_Str_VkQueryPipelineStatisticFlags(VkQueryPipelineStatisticFlags f) {
    String str = "|";
    if (f & VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT) {
        str += "INPUT_ASSEMBLY_VERTICES|";
    }
    if (f & VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT) {
        str += "INPUT_ASSEMBLY_PRIMITIVES|";
    }
    if (f & VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT) {
        str += "VERTEX_SHADER_INVOCATIONS|";
    }
    if (f & VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT) {
        str += "GEOMETRY_SHADER_INVOCATIONS|";
    }
    if (f & VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT) {
        str += "GEOMETRY_SHADER_PRIMITIVES|";
    }
    if (f & VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT) {
        str += "CLIPPING_INVOCATIONS|";
    }
    if (f & VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT) {
        str += "CLIPPING_PRIMITIVES|";
    }
    if (f & VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT) {
        str += "FRAGMENT_SHADER_INVOCATIONS|";
    }
    if (f & VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT) {
        str += "TESSELLATION_CONTROL_SHADER_PATCHES|";
    }
    if (f & VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT) {
        str += "TESSELLATION_EVALUATION_SHADER_INVOCATIONS|";
    }
    if (f & VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT) {
        str += "COMPUTE_SHADER_INVOCATIONS|";
    }
    if (f & VK_QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT) {
        str += "TASK_SHADER_INVOCATIONS|";
    }
    if (f & VK_QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT) {
        str += "MESH_SHADER_INVOCATIONS|";
    }
    if (f & VK_QUERY_PIPELINE_STATISTIC_CLUSTER_CULLING_SHADER_INVOCATIONS_BIT_HUAWEI) {
        str += "CLUSTER_CULLING_SHADER_INVOCATIONS|";
    }
    return std::move(str);
}

String On_Str_VkQueryResultFlags(VkQueryResultFlags f) {
    String str = "|";
    if (f & VK_QUERY_RESULT_64_BIT) {
        str += "64|";
    }
    if (f & VK_QUERY_RESULT_WAIT_BIT) {
        str += "WAIT|";
    }
    if (f & VK_QUERY_RESULT_WITH_AVAILABILITY_BIT) {
        str += "WITH_AVAILABILITY|";
    }
    if (f & VK_QUERY_RESULT_PARTIAL_BIT) {
        str += "PARTIAL|";
    }
    if (f & VK_QUERY_RESULT_WITH_STATUS_BIT_KHR) {
        str += "WITH_STATUS|";
    }
    return std::move(str);
}

String On_Str_VkBufferCreateFlags(VkBufferCreateFlags f) {
    String str = "|";
    if (f & VK_BUFFER_CREATE_SPARSE_BINDING_BIT) {
        str += "SPARSE_BINDING|";
    }
    if (f & VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT) {
        str += "SPARSE_RESIDENCY|";
    }
    if (f & VK_BUFFER_CREATE_SPARSE_ALIASED_BIT) {
        str += "SPARSE_ALIASED|";
    }
    if (f & VK_BUFFER_CREATE_PROTECTED_BIT) {
        str += "PROTECTED|";
    }
    if (f & VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT) {
        str += "DEVICE_ADDRESS_CAPTURE_REPLAY|";
    }
    if (f & VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT) {
        str += "DESCRIPTOR_BUFFER_CAPTURE_REPLAY|";
    }
    if (f & VK_BUFFER_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR) {
        str += "VIDEO_PROFILE_INDEPENDENT|";
    }
    return std::move(str);
}

String On_Str_VkBufferUsageFlags(VkBufferUsageFlags f) {
    String str = "|";
    if (f & VK_BUFFER_USAGE_TRANSFER_SRC_BIT) {
        str += "TRANSFER_SRC|";
    }
    if (f & VK_BUFFER_USAGE_TRANSFER_DST_BIT) {
        str += "TRANSFER_DST|";
    }
    if (f & VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT) {
        str += "UNIFORM_TEXEL_BUFFER|";
    }
    if (f & VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT) {
        str += "STORAGE_TEXEL_BUFFER|";
    }
    if (f & VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT) {
        str += "UNIFORM_BUFFER|";
    }
    if (f & VK_BUFFER_USAGE_STORAGE_BUFFER_BIT) {
        str += "STORAGE_BUFFER|";
    }
    if (f & VK_BUFFER_USAGE_INDEX_BUFFER_BIT) {
        str += "INDEX_BUFFER|";
    }
    if (f & VK_BUFFER_USAGE_VERTEX_BUFFER_BIT) {
        str += "VERTEX_BUFFER|";
    }
    if (f & VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT) {
        str += "INDIRECT_BUFFER|";
    }
    if (f & VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT) {
        str += "SHADER_DEVICE_ADDRESS|";
    }
    if (f & VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR) {
        str += "VIDEO_DECODE_SRC|";
    }
    if (f & VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR) {
        str += "VIDEO_DECODE_DST|";
    }
    if (f & VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT) {
        str += "TRANSFORM_FEEDBACK_BUFFER|";
    }
    if (f & VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT) {
        str += "TRANSFORM_FEEDBACK_COUNTER_BUFFER|";
    }
    if (f & VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT) {
        str += "CONDITIONAL_RENDERING|";
    }
#ifdef VK_ENABLE_BETA_EXTENSIONS
    if (f & VK_BUFFER_USAGE_EXECUTION_GRAPH_SCRATCH_BIT_AMDX) {
        str += "EXECUTION_GRAPH_SCRATCH|";
    }
#endif // VK_ENABLE_BETA_EXTENSIONS
    if (f & VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR) {
        str += "ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY|";
    }
    if (f & VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR) {
        str += "ACCELERATION_STRUCTURE_STORAGE|";
    }
    if (f & VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR) {
        str += "SHADER_BINDING_TABLE|";
    }
    if (f & VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR) {
        str += "VIDEO_ENCODE_DST|";
    }
    if (f & VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR) {
        str += "VIDEO_ENCODE_SRC|";
    }
    if (f & VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT) {
        str += "SAMPLER_DESCRIPTOR_BUFFER|";
    }
    if (f & VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT) {
        str += "RESOURCE_DESCRIPTOR_BUFFER|";
    }
    if (f & VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT) {
        str += "PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER|";
    }
    if (f & VK_BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT) {
        str += "MICROMAP_BUILD_INPUT_READ_ONLY|";
    }
    if (f & VK_BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT) {
        str += "MICROMAP_STORAGE|";
    }
    return std::move(str);
}

String On_Str_VkImageViewCreateFlags(VkImageViewCreateFlags f) {
    String str = "|";
    if (f & VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT) {
        str += "FRAGMENT_DENSITY_MAP_DYNAMIC|";
    }
    if (f & VK_IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT) {
        str += "DESCRIPTOR_BUFFER_CAPTURE_REPLAY|";
    }
    if (f & VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT) {
        str += "FRAGMENT_DENSITY_MAP_DEFERRED|";
    }
    return std::move(str);
}

String On_Str_VkPipelineCacheCreateFlags(VkPipelineCacheCreateFlags f) {
    String str = "|";
    if (f & VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT) {
        str += "EXTERNALLY_SYNCHRONIZED|";
    }
    return std::move(str);
}

String On_Str_VkColorComponentFlags(VkColorComponentFlags f) {
    String str = "|";
    if (f & VK_COLOR_COMPONENT_R_BIT) {
        str += "R|";
    }
    if (f & VK_COLOR_COMPONENT_G_BIT) {
        str += "G|";
    }
    if (f & VK_COLOR_COMPONENT_B_BIT) {
        str += "B|";
    }
    if (f & VK_COLOR_COMPONENT_A_BIT) {
        str += "A|";
    }
    return std::move(str);
}

String On_Str_VkPipelineCreateFlags(VkPipelineCreateFlags f) {
    String str = "|";
    if (f & VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT) {
        str += "DISABLE_OPTIMIZATION|";
    }
    if (f & VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT) {
        str += "ALLOW_DERIVATIVES|";
    }
    if (f & VK_PIPELINE_CREATE_DERIVATIVE_BIT) {
        str += "DERIVATIVE|";
    }
    if (f & VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT) {
        str += "VIEW_INDEX_FROM_DEVICE_INDEX|";
    }
    if (f & VK_PIPELINE_CREATE_DISPATCH_BASE_BIT) {
        str += "DISPATCH_BASE|";
    }
    if (f & VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT) {
        str += "FAIL_ON_PIPELINE_COMPILE_REQUIRED|";
    }
    if (f & VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT) {
        str += "EARLY_RETURN_ON_FAILURE|";
    }
    if (f & VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR) {
        str += "RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT|";
    }
    if (f & VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT) {
        str += "RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT|";
    }
    if (f & VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR) {
        str += "RAY_TRACING_NO_NULL_ANY_HIT_SHADERS|";
    }
    if (f & VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR) {
        str += "RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS|";
    }
    if (f & VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR) {
        str += "RAY_TRACING_NO_NULL_MISS_SHADERS|";
    }
    if (f & VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR) {
        str += "RAY_TRACING_NO_NULL_INTERSECTION_SHADERS|";
    }
    if (f & VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR) {
        str += "RAY_TRACING_SKIP_TRIANGLES|";
    }
    if (f & VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR) {
        str += "RAY_TRACING_SKIP_AABBS|";
    }
    if (f & VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR) {
        str += "RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY|";
    }
    if (f & VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV) {
        str += "DEFER_COMPILE|";
    }
    if (f & VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR) {
        str += "CAPTURE_STATISTICS|";
    }
    if (f & VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR) {
        str += "CAPTURE_INTERNAL_REPRESENTATIONS|";
    }
    if (f & VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV) {
        str += "INDIRECT_BINDABLE|";
    }
    if (f & VK_PIPELINE_CREATE_LIBRARY_BIT_KHR) {
        str += "LIBRARY|";
    }
    if (f & VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT) {
        str += "DESCRIPTOR_BUFFER|";
    }
    if (f & VK_PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT) {
        str += "RETAIN_LINK_TIME_OPTIMIZATION_INFO|";
    }
    if (f & VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT) {
        str += "LINK_TIME_OPTIMIZATION|";
    }
    if (f & VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV) {
        str += "RAY_TRACING_ALLOW_MOTION|";
    }
    if (f & VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT) {
        str += "COLOR_ATTACHMENT_FEEDBACK_LOOP|";
    }
    if (f & VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT) {
        str += "DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP|";
    }
    if (f & VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT) {
        str += "RAY_TRACING_OPACITY_MICROMAP|";
    }
#ifdef VK_ENABLE_BETA_EXTENSIONS
    if (f & VK_PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV) {
        str += "RAY_TRACING_DISPLACEMENT_MICROMAP|";
    }
#endif // VK_ENABLE_BETA_EXTENSIONS
    if (f & VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT) {
        str += "NO_PROTECTED_ACCESS|";
    }
    if (f & VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT) {
        str += "PROTECTED_ACCESS_ONLY|";
    }
    return std::move(str);
}

String On_Str_VkPipelineShaderStageCreateFlags(VkPipelineShaderStageCreateFlags f) {
    String str = "|";
    if (f & VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT) {
        str += "ALLOW_VARYING_SUBGROUP_SIZE|";
    }
    if (f & VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT) {
        str += "REQUIRE_FULL_SUBGROUPS|";
    }
    return std::move(str);
}

String On_Str_VkShaderStageFlags(VkShaderStageFlags f) {
    String str = "|";
    if (f & VK_SHADER_STAGE_VERTEX_BIT) {
        str += "VERTEX|";
    }
    if (f & VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT) {
        str += "TESSELLATION_CONTROL|";
    }
    if (f & VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT) {
        str += "TESSELLATION_EVALUATION|";
    }
    if (f & VK_SHADER_STAGE_GEOMETRY_BIT) {
        str += "GEOMETRY|";
    }
    if (f & VK_SHADER_STAGE_FRAGMENT_BIT) {
        str += "FRAGMENT|";
    }
    if (f & VK_SHADER_STAGE_COMPUTE_BIT) {
        str += "COMPUTE|";
    }
    if (f & VK_SHADER_STAGE_ALL_GRAPHICS) {
        str += "ALL_GRAPHICS|";
    }
    if (f & VK_SHADER_STAGE_ALL) {
        str += "ALL|";
    }
    if (f & VK_SHADER_STAGE_RAYGEN_BIT_KHR) {
        str += "RAYGEN|";
    }
    if (f & VK_SHADER_STAGE_ANY_HIT_BIT_KHR) {
        str += "ANY_HIT|";
    }
    if (f & VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR) {
        str += "CLOSEST_HIT|";
    }
    if (f & VK_SHADER_STAGE_MISS_BIT_KHR) {
        str += "MISS|";
    }
    if (f & VK_SHADER_STAGE_INTERSECTION_BIT_KHR) {
        str += "INTERSECTION|";
    }
    if (f & VK_SHADER_STAGE_CALLABLE_BIT_KHR) {
        str += "CALLABLE|";
    }
    if (f & VK_SHADER_STAGE_TASK_BIT_EXT) {
        str += "TASK|";
    }
    if (f & VK_SHADER_STAGE_MESH_BIT_EXT) {
        str += "MESH|";
    }
    if (f & VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI) {
        str += "SUBPASS_SHADING|";
    }
    if (f & VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI) {
        str += "CLUSTER_CULLING|";
    }
    return std::move(str);
}

String On_Str_VkCullModeFlags(VkCullModeFlags f) {
    String str = "|";
    if (f & VK_CULL_MODE_NONE) {
        str += "NONE|";
    }
    if (f & VK_CULL_MODE_FRONT_BIT) {
        str += "FRONT|";
    }
    if (f & VK_CULL_MODE_BACK_BIT) {
        str += "BACK|";
    }
    if (f & VK_CULL_MODE_FRONT_AND_BACK) {
        str += "FRONT_AND_BACK|";
    }
    return std::move(str);
}

String On_Str_VkPipelineDepthStencilStateCreateFlags(VkPipelineDepthStencilStateCreateFlags f) {
    String str = "|";
    if (f & VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT) {
        str += "RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS|";
    }
    if (f & VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT) {
        str += "RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS|";
    }
    return std::move(str);
}

String On_Str_VkPipelineColorBlendStateCreateFlags(VkPipelineColorBlendStateCreateFlags f) {
    String str = "|";
    if (f & VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT) {
        str += "RASTERIZATION_ORDER_ATTACHMENT_ACCESS|";
    }
    return std::move(str);
}

String On_Str_VkPipelineLayoutCreateFlags(VkPipelineLayoutCreateFlags f) {
    String str = "|";
    if (f & VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT) {
        str += "INDEPENDENT_SETS|";
    }
    return std::move(str);
}

String On_Str_VkSamplerCreateFlags(VkSamplerCreateFlags f) {
    String str = "|";
    if (f & VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT) {
        str += "SUBSAMPLED|";
    }
    if (f & VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT) {
        str += "SUBSAMPLED_COARSE_RECONSTRUCTION|";
    }
    if (f & VK_SAMPLER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT) {
        str += "DESCRIPTOR_BUFFER_CAPTURE_REPLAY|";
    }
    if (f & VK_SAMPLER_CREATE_NON_SEAMLESS_CUBE_MAP_BIT_EXT) {
        str += "NON_SEAMLESS_CUBE_MAP|";
    }
    if (f & VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM) {
        str += "IMAGE_PROCESSING|";
    }
    return std::move(str);
}

String On_Str_VkDescriptorPoolCreateFlags(VkDescriptorPoolCreateFlags f) {
    String str = "|";
    if (f & VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT) {
        str += "FREE_DESCRIPTOR_SET|";
    }
    if (f & VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT) {
        str += "UPDATE_AFTER_BIND|";
    }
    if (f & VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT) {
        str += "HOST_ONLY|";
    }
    if (f & VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NV) {
        str += "ALLOW_OVERALLOCATION_SETS|";
    }
    if (f & VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_POOLS_BIT_NV) {
        str += "ALLOW_OVERALLOCATION_POOLS|";
    }
    return std::move(str);
}

String On_Str_VkDescriptorSetLayoutCreateFlags(VkDescriptorSetLayoutCreateFlags f) {
    String str = "|";
    if (f & VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT) {
        str += "UPDATE_AFTER_BIND_POOL|";
    }
    if (f & VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR) {
        str += "PUSH_DESCRIPTOR|";
    }
    if (f & VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT) {
        str += "DESCRIPTOR_BUFFER|";
    }
    if (f & VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT) {
        str += "EMBEDDED_IMMUTABLE_SAMPLERS|";
    }
    if (f & VK_DESCRIPTOR_SET_LAYOUT_CREATE_INDIRECT_BINDABLE_BIT_NV) {
        str += "INDIRECT_BINDABLE|";
    }
    if (f & VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT) {
        str += "HOST_ONLY_POOL|";
    }
    if (f & VK_DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV) {
        str += "PER_STAGE|";
    }
    return std::move(str);
}

String On_Str_VkAttachmentDescriptionFlags(VkAttachmentDescriptionFlags f) {
    String str = "|";
    if (f & VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT) {
        str += "MAY_ALIAS|";
    }
    return std::move(str);
}

String On_Str_VkDependencyFlags(VkDependencyFlags f) {
    String str = "|";
    if (f & VK_DEPENDENCY_BY_REGION_BIT) {
        str += "BY_REGION|";
    }
    if (f & VK_DEPENDENCY_DEVICE_GROUP_BIT) {
        str += "DEVICE_GROUP|";
    }
    if (f & VK_DEPENDENCY_VIEW_LOCAL_BIT) {
        str += "VIEW_LOCAL|";
    }
    if (f & VK_DEPENDENCY_FEEDBACK_LOOP_BIT_EXT) {
        str += "FEEDBACK_LOOP|";
    }
    return std::move(str);
}

String On_Str_VkFramebufferCreateFlags(VkFramebufferCreateFlags f) {
    String str = "|";
    if (f & VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT) {
        str += "IMAGELESS|";
    }
    return std::move(str);
}

String On_Str_VkRenderPassCreateFlags(VkRenderPassCreateFlags f) {
    String str = "|";
    if (f & VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM) {
        str += "TRANSFORM|";
    }
    return std::move(str);
}

String On_Str_VkSubpassDescriptionFlags(VkSubpassDescriptionFlags f) {
    String str = "|";
    if (f & VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX) {
        str += "PER_VIEW_ATTRIBUTES_BIT_NVX|";
    }
    if (f & VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX) {
        str += "PER_VIEW_POSITION_X_ONLY_BIT_NVX|";
    }
    if (f & VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM) {
        str += "FRAGMENT_REGION|";
    }
    if (f & VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM) {
        str += "SHADER_RESOLVE|";
    }
    if (f & VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT) {
        str += "RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS|";
    }
    if (f & VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT) {
        str += "RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS|";
    }
    if (f & VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT) {
        str += "RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS|";
    }
    if (f & VK_SUBPASS_DESCRIPTION_ENABLE_LEGACY_DITHERING_BIT_EXT) {
        str += "ENABLE_LEGACY_DITHERING|";
    }
    return std::move(str);
}

String On_Str_VkCommandPoolCreateFlags(VkCommandPoolCreateFlags f) {
    String str = "|";
    if (f & VK_COMMAND_POOL_CREATE_TRANSIENT_BIT) {
        str += "TRANSIENT|";
    }
    if (f & VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT) {
        str += "RESET_COMMAND_BUFFER|";
    }
    if (f & VK_COMMAND_POOL_CREATE_PROTECTED_BIT) {
        str += "PROTECTED|";
    }
    return std::move(str);
}

String On_Str_VkCommandPoolResetFlags(VkCommandPoolResetFlags f) {
    String str = "|";
    if (f & VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT) {
        str += "RELEASE_RESOURCES|";
    }
    return std::move(str);
}

String On_Str_VkCommandBufferUsageFlags(VkCommandBufferUsageFlags f) {
    String str = "|";
    if (f & VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT) {
        str += "ONE_TIME_SUBMIT|";
    }
    if (f & VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT) {
        str += "RENDER_PASS_CONTINUE|";
    }
    if (f & VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT) {
        str += "SIMULTANEOUS_USE|";
    }
    return std::move(str);
}

String On_Str_VkQueryControlFlags(VkQueryControlFlags f) {
    String str = "|";
    if (f & VK_QUERY_CONTROL_PRECISE_BIT) {
        str += "PRECISE|";
    }
    return std::move(str);
}

String On_Str_VkCommandBufferResetFlags(VkCommandBufferResetFlags f) {
    String str = "|";
    if (f & VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT) {
        str += "RELEASE_RESOURCES|";
    }
    return std::move(str);
}

String On_Str_VkStencilFaceFlags(VkStencilFaceFlags f) {
    String str = "|";
    if (f & VK_STENCIL_FACE_FRONT_BIT) {
        str += "FRONT|";
    }
    if (f & VK_STENCIL_FACE_BACK_BIT) {
        str += "BACK|";
    }
    if (f & VK_STENCIL_FACE_FRONT_AND_BACK) {
        str += "FRONT_AND_BACK|";
    }
    return std::move(str);
}

String On_Str_VkSubgroupFeatureFlags(VkSubgroupFeatureFlags f) {
    String str = "|";
    if (f & VK_SUBGROUP_FEATURE_BASIC_BIT) {
        str += "BASIC|";
    }
    if (f & VK_SUBGROUP_FEATURE_VOTE_BIT) {
        str += "VOTE|";
    }
    if (f & VK_SUBGROUP_FEATURE_ARITHMETIC_BIT) {
        str += "ARITHMETIC|";
    }
    if (f & VK_SUBGROUP_FEATURE_BALLOT_BIT) {
        str += "BALLOT|";
    }
    if (f & VK_SUBGROUP_FEATURE_SHUFFLE_BIT) {
        str += "SHUFFLE|";
    }
    if (f & VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT) {
        str += "SHUFFLE_RELATIVE|";
    }
    if (f & VK_SUBGROUP_FEATURE_CLUSTERED_BIT) {
        str += "CLUSTERED|";
    }
    if (f & VK_SUBGROUP_FEATURE_QUAD_BIT) {
        str += "QUAD|";
    }
    if (f & VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV) {
        str += "PARTITIONED|";
    }
    if (f & VK_SUBGROUP_FEATURE_ROTATE_BIT_KHR) {
        str += "ROTATE|";
    }
    if (f & VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR) {
        str += "ROTATE_CLUSTERED|";
    }
    return std::move(str);
}

String On_Str_VkPeerMemoryFeatureFlags(VkPeerMemoryFeatureFlags f) {
    String str = "|";
    if (f & VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT) {
        str += "COPY_SRC|";
    }
    if (f & VK_PEER_MEMORY_FEATURE_COPY_DST_BIT) {
        str += "COPY_DST|";
    }
    if (f & VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT) {
        str += "GENERIC_SRC|";
    }
    if (f & VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT) {
        str += "GENERIC_DST|";
    }
    return std::move(str);
}

String On_Str_VkMemoryAllocateFlags(VkMemoryAllocateFlags f) {
    String str = "|";
    if (f & VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT) {
        str += "DEVICE_MASK|";
    }
    if (f & VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT) {
        str += "DEVICE_ADDRESS|";
    }
    if (f & VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT) {
        str += "DEVICE_ADDRESS_CAPTURE_REPLAY|";
    }
    return std::move(str);
}

String On_Str_VkExternalMemoryHandleTypeFlags(VkExternalMemoryHandleTypeFlags f) {
    String str = "|";
    if (f & VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT) {
        str += "OPAQUE_FD|";
    }
    if (f & VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT) {
        str += "OPAQUE_WIN32|";
    }
    if (f & VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT) {
        str += "OPAQUE_WIN32_KMT|";
    }
    if (f & VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT) {
        str += "D3D11_TEXTURE|";
    }
    if (f & VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT) {
        str += "D3D11_TEXTURE_KMT|";
    }
    if (f & VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT) {
        str += "D3D12_HEAP|";
    }
    if (f & VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT) {
        str += "D3D12_RESOURCE|";
    }
    if (f & VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT) {
        str += "DMA_BUF|";
    }
    if (f & VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID) {
        str += "ANDROID_HARDWARE_BUFFER_BIT_ANDROID|";
    }
    if (f & VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT) {
        str += "HOST_ALLOCATION|";
    }
    if (f & VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT) {
        str += "HOST_MAPPED_FOREIGN_MEMORY|";
    }
    if (f & VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA) {
        str += "ZIRCON_VMO|";
    }
    if (f & VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV) {
        str += "RDMA_ADDRESS|";
    }
    if (f & VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX) {
        str += "SCREEN_BUFFER|";
    }
    return std::move(str);
}

String On_Str_VkExternalMemoryFeatureFlags(VkExternalMemoryFeatureFlags f) {
    String str = "|";
    if (f & VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT) {
        str += "DEDICATED_ONLY|";
    }
    if (f & VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT) {
        str += "EXPORTABLE|";
    }
    if (f & VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT) {
        str += "IMPORTABLE|";
    }
    return std::move(str);
}

String On_Str_VkExternalFenceHandleTypeFlags(VkExternalFenceHandleTypeFlags f) {
    String str = "|";
    if (f & VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT) {
        str += "OPAQUE_FD|";
    }
    if (f & VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT) {
        str += "OPAQUE_WIN32|";
    }
    if (f & VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT) {
        str += "OPAQUE_WIN32_KMT|";
    }
    if (f & VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT) {
        str += "SYNC_FD|";
    }
    return std::move(str);
}

String On_Str_VkExternalFenceFeatureFlags(VkExternalFenceFeatureFlags f) {
    String str = "|";
    if (f & VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT) {
        str += "EXPORTABLE|";
    }
    if (f & VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT) {
        str += "IMPORTABLE|";
    }
    return std::move(str);
}

String On_Str_VkFenceImportFlags(VkFenceImportFlags f) {
    String str = "|";
    if (f & VK_FENCE_IMPORT_TEMPORARY_BIT) {
        str += "TEMPORARY|";
    }
    return std::move(str);
}

String On_Str_VkSemaphoreImportFlags(VkSemaphoreImportFlags f) {
    String str = "|";
    if (f & VK_SEMAPHORE_IMPORT_TEMPORARY_BIT) {
        str += "TEMPORARY|";
    }
    return std::move(str);
}

String On_Str_VkExternalSemaphoreHandleTypeFlags(VkExternalSemaphoreHandleTypeFlags f) {
    String str = "|";
    if (f & VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT) {
        str += "OPAQUE_FD|";
    }
    if (f & VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT) {
        str += "OPAQUE_WIN32|";
    }
    if (f & VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT) {
        str += "OPAQUE_WIN32_KMT|";
    }
    if (f & VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT) {
        str += "D3D12_FENCE|";
    }
    if (f & VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT) {
        str += "SYNC_FD|";
    }
    if (f & VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA) {
        str += "ZIRCON_EVENT|";
    }
    return std::move(str);
}

String On_Str_VkExternalSemaphoreFeatureFlags(VkExternalSemaphoreFeatureFlags f) {
    String str = "|";
    if (f & VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT) {
        str += "EXPORTABLE|";
    }
    if (f & VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT) {
        str += "IMPORTABLE|";
    }
    return std::move(str);
}

String On_Str_VkResolveModeFlags(VkResolveModeFlags f) {
    String str = "|";
    if (f & VK_RESOLVE_MODE_NONE) {
        str += "NONE|";
    }
    if (f & VK_RESOLVE_MODE_SAMPLE_ZERO_BIT) {
        str += "SAMPLE_ZERO|";
    }
    if (f & VK_RESOLVE_MODE_AVERAGE_BIT) {
        str += "AVERAGE|";
    }
    if (f & VK_RESOLVE_MODE_MIN_BIT) {
        str += "MIN|";
    }
    if (f & VK_RESOLVE_MODE_MAX_BIT) {
        str += "MAX|";
    }
    if (f & VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID) {
        str += "EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID|";
    }
    return std::move(str);
}

String On_Str_VkDescriptorBindingFlags(VkDescriptorBindingFlags f) {
    String str = "|";
    if (f & VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT) {
        str += "UPDATE_AFTER_BIND|";
    }
    if (f & VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT) {
        str += "UPDATE_UNUSED_WHILE_PENDING|";
    }
    if (f & VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT) {
        str += "PARTIALLY_BOUND|";
    }
    if (f & VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT) {
        str += "VARIABLE_DESCRIPTOR_COUNT|";
    }
    return std::move(str);
}

String On_Str_VkSemaphoreWaitFlags(VkSemaphoreWaitFlags f) {
    String str = "|";
    if (f & VK_SEMAPHORE_WAIT_ANY_BIT) {
        str += "ANY|";
    }
    return std::move(str);
}

String On_Str_VkPipelineCreationFeedbackFlags(VkPipelineCreationFeedbackFlags f) {
    String str = "|";
    if (f & VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT) {
        str += "VALID|";
    }
    if (f & VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT) {
        str += "APPLICATION_PIPELINE_CACHE_HIT|";
    }
    if (f & VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT) {
        str += "BASE_PIPELINE_ACCELERATION|";
    }
    return std::move(str);
}

String On_Str_VkToolPurposeFlags(VkToolPurposeFlags f) {
    String str = "|";
    if (f & VK_TOOL_PURPOSE_VALIDATION_BIT) {
        str += "VALIDATION|";
    }
    if (f & VK_TOOL_PURPOSE_PROFILING_BIT) {
        str += "PROFILING|";
    }
    if (f & VK_TOOL_PURPOSE_TRACING_BIT) {
        str += "TRACING|";
    }
    if (f & VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT) {
        str += "ADDITIONAL_FEATURES|";
    }
    if (f & VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT) {
        str += "MODIFYING_FEATURES|";
    }
    if (f & VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT) {
        str += "DEBUG_REPORTING|";
    }
    if (f & VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT) {
        str += "DEBUG_MARKERS|";
    }
    return std::move(str);
}

String On_Str_VkPipelineStageFlags2(VkPipelineStageFlags2 f) {
    String str = "|";
    if (f & VK_PIPELINE_STAGE_2_NONE) {
        str += "2_NONE|";
    }
    if (f & VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT) {
        str += "2_TOP_OF_PIPE|";
    }
    if (f & VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT) {
        str += "2_DRAW_INDIRECT|";
    }
    if (f & VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT) {
        str += "2_VERTEX_INPUT|";
    }
    if (f & VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT) {
        str += "2_VERTEX_SHADER|";
    }
    if (f & VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT) {
        str += "2_TESSELLATION_CONTROL_SHADER|";
    }
    if (f & VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT) {
        str += "2_TESSELLATION_EVALUATION_SHADER|";
    }
    if (f & VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT) {
        str += "2_GEOMETRY_SHADER|";
    }
    if (f & VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT) {
        str += "2_FRAGMENT_SHADER|";
    }
    if (f & VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT) {
        str += "2_EARLY_FRAGMENT_TESTS|";
    }
    if (f & VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT) {
        str += "2_LATE_FRAGMENT_TESTS|";
    }
    if (f & VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT) {
        str += "2_COLOR_ATTACHMENT_OUTPUT|";
    }
    if (f & VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT) {
        str += "2_COMPUTE_SHADER|";
    }
    if (f & VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT) {
        str += "2_ALL_TRANSFER|";
    }
    if (f & VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT) {
        str += "2_BOTTOM_OF_PIPE|";
    }
    if (f & VK_PIPELINE_STAGE_2_HOST_BIT) {
        str += "2_HOST|";
    }
    if (f & VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT) {
        str += "2_ALL_GRAPHICS|";
    }
    if (f & VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT) {
        str += "2_ALL_COMMANDS|";
    }
    if (f & VK_PIPELINE_STAGE_2_COPY_BIT) {
        str += "2_COPY|";
    }
    if (f & VK_PIPELINE_STAGE_2_RESOLVE_BIT) {
        str += "2_RESOLVE|";
    }
    if (f & VK_PIPELINE_STAGE_2_BLIT_BIT) {
        str += "2_BLIT|";
    }
    if (f & VK_PIPELINE_STAGE_2_CLEAR_BIT) {
        str += "2_CLEAR|";
    }
    if (f & VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT) {
        str += "2_INDEX_INPUT|";
    }
    if (f & VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT) {
        str += "2_VERTEX_ATTRIBUTE_INPUT|";
    }
    if (f & VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT) {
        str += "2_PRE_RASTERIZATION_SHADERS|";
    }
    if (f & VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR) {
        str += "2_VIDEO_DECODE|";
    }
    if (f & VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR) {
        str += "2_VIDEO_ENCODE|";
    }
    if (f & VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT) {
        str += "2_TRANSFORM_FEEDBACK|";
    }
    if (f & VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT) {
        str += "2_CONDITIONAL_RENDERING|";
    }
    if (f & VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV) {
        str += "2_COMMAND_PREPROCESS|";
    }
    if (f & VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR) {
        str += "2_FRAGMENT_SHADING_RATE_ATTACHMENT|";
    }
    if (f & VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR) {
        str += "2_ACCELERATION_STRUCTURE_BUILD|";
    }
    if (f & VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR) {
        str += "2_RAY_TRACING_SHADER|";
    }
    if (f & VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT) {
        str += "2_FRAGMENT_DENSITY_PROCESS|";
    }
    if (f & VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT) {
        str += "2_TASK_SHADER|";
    }
    if (f & VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT) {
        str += "2_MESH_SHADER|";
    }
    if (f & VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI) {
        str += "2_SUBPASS_SHADER|";
    }
    if (f & VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI) {
        str += "2_INVOCATION_MASK|";
    }
    if (f & VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR) {
        str += "2_ACCELERATION_STRUCTURE_COPY|";
    }
    if (f & VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT) {
        str += "2_MICROMAP_BUILD|";
    }
    if (f & VK_PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI) {
        str += "2_CLUSTER_CULLING_SHADER|";
    }
    if (f & VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV) {
        str += "2_OPTICAL_FLOW|";
    }
    return std::move(str);
}

String On_Str_VkAccessFlags2(VkAccessFlags2 f) {
    String str = "|";
    if (f & VK_ACCESS_2_NONE) {
        str += "2_NONE|";
    }
    if (f & VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT) {
        str += "2_INDIRECT_COMMAND_READ|";
    }
    if (f & VK_ACCESS_2_INDEX_READ_BIT) {
        str += "2_INDEX_READ|";
    }
    if (f & VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT) {
        str += "2_VERTEX_ATTRIBUTE_READ|";
    }
    if (f & VK_ACCESS_2_UNIFORM_READ_BIT) {
        str += "2_UNIFORM_READ|";
    }
    if (f & VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT) {
        str += "2_INPUT_ATTACHMENT_READ|";
    }
    if (f & VK_ACCESS_2_SHADER_READ_BIT) {
        str += "2_SHADER_READ|";
    }
    if (f & VK_ACCESS_2_SHADER_WRITE_BIT) {
        str += "2_SHADER_WRITE|";
    }
    if (f & VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT) {
        str += "2_COLOR_ATTACHMENT_READ|";
    }
    if (f & VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT) {
        str += "2_COLOR_ATTACHMENT_WRITE|";
    }
    if (f & VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT) {
        str += "2_DEPTH_STENCIL_ATTACHMENT_READ|";
    }
    if (f & VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT) {
        str += "2_DEPTH_STENCIL_ATTACHMENT_WRITE|";
    }
    if (f & VK_ACCESS_2_TRANSFER_READ_BIT) {
        str += "2_TRANSFER_READ|";
    }
    if (f & VK_ACCESS_2_TRANSFER_WRITE_BIT) {
        str += "2_TRANSFER_WRITE|";
    }
    if (f & VK_ACCESS_2_HOST_READ_BIT) {
        str += "2_HOST_READ|";
    }
    if (f & VK_ACCESS_2_HOST_WRITE_BIT) {
        str += "2_HOST_WRITE|";
    }
    if (f & VK_ACCESS_2_MEMORY_READ_BIT) {
        str += "2_MEMORY_READ|";
    }
    if (f & VK_ACCESS_2_MEMORY_WRITE_BIT) {
        str += "2_MEMORY_WRITE|";
    }
    if (f & VK_ACCESS_2_SHADER_SAMPLED_READ_BIT) {
        str += "2_SHADER_SAMPLED_READ|";
    }
    if (f & VK_ACCESS_2_SHADER_STORAGE_READ_BIT) {
        str += "2_SHADER_STORAGE_READ|";
    }
    if (f & VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT) {
        str += "2_SHADER_STORAGE_WRITE|";
    }
    if (f & VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR) {
        str += "2_VIDEO_DECODE_READ|";
    }
    if (f & VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR) {
        str += "2_VIDEO_DECODE_WRITE|";
    }
    if (f & VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR) {
        str += "2_VIDEO_ENCODE_READ|";
    }
    if (f & VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR) {
        str += "2_VIDEO_ENCODE_WRITE|";
    }
    if (f & VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT) {
        str += "2_TRANSFORM_FEEDBACK_WRITE|";
    }
    if (f & VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT) {
        str += "2_TRANSFORM_FEEDBACK_COUNTER_READ|";
    }
    if (f & VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT) {
        str += "2_TRANSFORM_FEEDBACK_COUNTER_WRITE|";
    }
    if (f & VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT) {
        str += "2_CONDITIONAL_RENDERING_READ|";
    }
    if (f & VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV) {
        str += "2_COMMAND_PREPROCESS_READ|";
    }
    if (f & VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV) {
        str += "2_COMMAND_PREPROCESS_WRITE|";
    }
    if (f & VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR) {
        str += "2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ|";
    }
    if (f & VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR) {
        str += "2_ACCELERATION_STRUCTURE_READ|";
    }
    if (f & VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR) {
        str += "2_ACCELERATION_STRUCTURE_WRITE|";
    }
    if (f & VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT) {
        str += "2_FRAGMENT_DENSITY_MAP_READ|";
    }
    if (f & VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT) {
        str += "2_COLOR_ATTACHMENT_READ_NONCOHERENT|";
    }
    if (f & VK_ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT) {
        str += "2_DESCRIPTOR_BUFFER_READ|";
    }
    if (f & VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI) {
        str += "2_INVOCATION_MASK_READ|";
    }
    if (f & VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR) {
        str += "2_SHADER_BINDING_TABLE_READ|";
    }
    if (f & VK_ACCESS_2_MICROMAP_READ_BIT_EXT) {
        str += "2_MICROMAP_READ|";
    }
    if (f & VK_ACCESS_2_MICROMAP_WRITE_BIT_EXT) {
        str += "2_MICROMAP_WRITE|";
    }
    if (f & VK_ACCESS_2_OPTICAL_FLOW_READ_BIT_NV) {
        str += "2_OPTICAL_FLOW_READ|";
    }
    if (f & VK_ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV) {
        str += "2_OPTICAL_FLOW_WRITE|";
    }
    return std::move(str);
}

String On_Str_VkSubmitFlags(VkSubmitFlags f) {
    String str = "|";
    if (f & VK_SUBMIT_PROTECTED_BIT) {
        str += "PROTECTED|";
    }
    return std::move(str);
}

String On_Str_VkRenderingFlags(VkRenderingFlags f) {
    String str = "|";
    if (f & VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT) {
        str += "CONTENTS_SECONDARY_COMMAND_BUFFERS|";
    }
    if (f & VK_RENDERING_SUSPENDING_BIT) {
        str += "SUSPENDING|";
    }
    if (f & VK_RENDERING_RESUMING_BIT) {
        str += "RESUMING|";
    }
    if (f & VK_RENDERING_CONTENTS_INLINE_BIT_EXT) {
        str += "CONTENTS_INLINE|";
    }
    if (f & VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT) {
        str += "ENABLE_LEGACY_DITHERING|";
    }
    return std::move(str);
}

String On_Str_VkFormatFeatureFlags2(VkFormatFeatureFlags2 f) {
    String str = "|";
    if (f & VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT) {
        str += "2_SAMPLED_IMAGE|";
    }
    if (f & VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT) {
        str += "2_STORAGE_IMAGE|";
    }
    if (f & VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT) {
        str += "2_STORAGE_IMAGE_ATOMIC|";
    }
    if (f & VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT) {
        str += "2_UNIFORM_TEXEL_BUFFER|";
    }
    if (f & VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT) {
        str += "2_STORAGE_TEXEL_BUFFER|";
    }
    if (f & VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT) {
        str += "2_STORAGE_TEXEL_BUFFER_ATOMIC|";
    }
    if (f & VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT) {
        str += "2_VERTEX_BUFFER|";
    }
    if (f & VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT) {
        str += "2_COLOR_ATTACHMENT|";
    }
    if (f & VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT) {
        str += "2_COLOR_ATTACHMENT_BLEND|";
    }
    if (f & VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT) {
        str += "2_DEPTH_STENCIL_ATTACHMENT|";
    }
    if (f & VK_FORMAT_FEATURE_2_BLIT_SRC_BIT) {
        str += "2_BLIT_SRC|";
    }
    if (f & VK_FORMAT_FEATURE_2_BLIT_DST_BIT) {
        str += "2_BLIT_DST|";
    }
    if (f & VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT) {
        str += "2_SAMPLED_IMAGE_FILTER_LINEAR|";
    }
    if (f & VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT) {
        str += "2_SAMPLED_IMAGE_FILTER_CUBIC|";
    }
    if (f & VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT) {
        str += "2_TRANSFER_SRC|";
    }
    if (f & VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT) {
        str += "2_TRANSFER_DST|";
    }
    if (f & VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT) {
        str += "2_SAMPLED_IMAGE_FILTER_MINMAX|";
    }
    if (f & VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT) {
        str += "2_MIDPOINT_CHROMA_SAMPLES|";
    }
    if (f & VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT) {
        str += "2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER|";
    }
    if (f & VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT) {
        str += "2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER|";
    }
    if (f & VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT) {
        str += "2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT|";
    }
    if (f & VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT) {
        str += "2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE|";
    }
    if (f & VK_FORMAT_FEATURE_2_DISJOINT_BIT) {
        str += "2_DISJOINT|";
    }
    if (f & VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT) {
        str += "2_COSITED_CHROMA_SAMPLES|";
    }
    if (f & VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT) {
        str += "2_STORAGE_READ_WITHOUT_FORMAT|";
    }
    if (f & VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT) {
        str += "2_STORAGE_WRITE_WITHOUT_FORMAT|";
    }
    if (f & VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT) {
        str += "2_SAMPLED_IMAGE_DEPTH_COMPARISON|";
    }
    if (f & VK_FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR) {
        str += "2_VIDEO_DECODE_OUTPUT|";
    }
    if (f & VK_FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR) {
        str += "2_VIDEO_DECODE_DPB|";
    }
    if (f & VK_FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR) {
        str += "2_ACCELERATION_STRUCTURE_VERTEX_BUFFER|";
    }
    if (f & VK_FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT) {
        str += "2_FRAGMENT_DENSITY_MAP|";
    }
    if (f & VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR) {
        str += "2_FRAGMENT_SHADING_RATE_ATTACHMENT|";
    }
    if (f & VK_FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXT) {
        str += "2_HOST_IMAGE_TRANSFER|";
    }
    if (f & VK_FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR) {
        str += "2_VIDEO_ENCODE_INPUT|";
    }
    if (f & VK_FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR) {
        str += "2_VIDEO_ENCODE_DPB|";
    }
    if (f & VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV) {
        str += "2_LINEAR_COLOR_ATTACHMENT|";
    }
    if (f & VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM) {
        str += "2_WEIGHT_IMAGE|";
    }
    if (f & VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM) {
        str += "2_WEIGHT_SAMPLED_IMAGE|";
    }
    if (f & VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM) {
        str += "2_BLOCK_MATCHING|";
    }
    if (f & VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM) {
        str += "2_BOX_FILTER_SAMPLED|";
    }
    if (f & VK_FORMAT_FEATURE_2_OPTICAL_FLOW_IMAGE_BIT_NV) {
        str += "2_OPTICAL_FLOW_IMAGE|";
    }
    if (f & VK_FORMAT_FEATURE_2_OPTICAL_FLOW_VECTOR_BIT_NV) {
        str += "2_OPTICAL_FLOW_VECTOR|";
    }
    if (f & VK_FORMAT_FEATURE_2_OPTICAL_FLOW_COST_BIT_NV) {
        str += "2_OPTICAL_FLOW_COST|";
    }
    return std::move(str);
}

String On_Str_VkSurfaceTransformFlagsKHR(VkSurfaceTransformFlagsKHR f) {
    String str = "|";
    if (f & VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR) {
        str += "IDENTITY|";
    }
    if (f & VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR) {
        str += "ROTATE_90|";
    }
    if (f & VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR) {
        str += "ROTATE_180|";
    }
    if (f & VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR) {
        str += "ROTATE_270|";
    }
    if (f & VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR) {
        str += "HORIZONTAL_MIRROR|";
    }
    if (f & VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR) {
        str += "HORIZONTAL_MIRROR_ROTATE_90|";
    }
    if (f & VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR) {
        str += "HORIZONTAL_MIRROR_ROTATE_180|";
    }
    if (f & VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR) {
        str += "HORIZONTAL_MIRROR_ROTATE_270|";
    }
    if (f & VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR) {
        str += "INHERIT|";
    }
    return std::move(str);
}

String On_Str_VkCompositeAlphaFlagsKHR(VkCompositeAlphaFlagsKHR f) {
    String str = "|";
    if (f & VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR) {
        str += "OPAQUE|";
    }
    if (f & VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR) {
        str += "PRE_MULTIPLIED|";
    }
    if (f & VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR) {
        str += "POST_MULTIPLIED|";
    }
    if (f & VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR) {
        str += "INHERIT|";
    }
    return std::move(str);
}

String On_Str_VkSwapchainCreateFlagsKHR(VkSwapchainCreateFlagsKHR f) {
    String str = "|";
    if (f & VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR) {
        str += "SPLIT_INSTANCE_BIND_REGIONS|";
    }
    if (f & VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR) {
        str += "PROTECTED|";
    }
    if (f & VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR) {
        str += "MUTABLE_FORMAT|";
    }
    if (f & VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT) {
        str += "DEFERRED_MEMORY_ALLOCATION|";
    }
    return std::move(str);
}

String On_Str_VkDeviceGroupPresentModeFlagsKHR(VkDeviceGroupPresentModeFlagsKHR f) {
    String str = "|";
    if (f & VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR) {
        str += "LOCAL|";
    }
    if (f & VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR) {
        str += "REMOTE|";
    }
    if (f & VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR) {
        str += "SUM|";
    }
    if (f & VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR) {
        str += "LOCAL_MULTI_DEVICE|";
    }
    return std::move(str);
}

String On_Str_VkDisplayPlaneAlphaFlagsKHR(VkDisplayPlaneAlphaFlagsKHR f) {
    String str = "|";
    if (f & VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR) {
        str += "OPAQUE|";
    }
    if (f & VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR) {
        str += "GLOBAL|";
    }
    if (f & VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR) {
        str += "PER_PIXEL|";
    }
    if (f & VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR) {
        str += "PER_PIXEL_PREMULTIPLIED|";
    }
    return std::move(str);
}

String On_Str_VkVideoCodecOperationFlagsKHR(VkVideoCodecOperationFlagsKHR f) {
    String str = "|";
    if (f & VK_VIDEO_CODEC_OPERATION_NONE_KHR) {
        str += "NONE_KHR|";
    }
    if (f & VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR) {
        str += "ENCODE_H264|";
    }
    if (f & VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR) {
        str += "ENCODE_H265|";
    }
    if (f & VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR) {
        str += "DECODE_H264|";
    }
    if (f & VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR) {
        str += "DECODE_H265|";
    }
    if (f & VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR) {
        str += "DECODE_AV1|";
    }
    return std::move(str);
}

String On_Str_VkVideoChromaSubsamplingFlagsKHR(VkVideoChromaSubsamplingFlagsKHR f) {
    String str = "|";
    if (f & VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_KHR) {
        str += "INVALID_KHR|";
    }
    if (f & VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR) {
        str += "MONOCHROME|";
    }
    if (f & VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR) {
        str += "420|";
    }
    if (f & VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR) {
        str += "422|";
    }
    if (f & VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR) {
        str += "444|";
    }
    return std::move(str);
}

String On_Str_VkVideoComponentBitDepthFlagsKHR(VkVideoComponentBitDepthFlagsKHR f) {
    String str = "|";
    if (f & VK_VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR) {
        str += "INVALID_KHR|";
    }
    if (f & VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR) {
        str += "8|";
    }
    if (f & VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR) {
        str += "10|";
    }
    if (f & VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR) {
        str += "12|";
    }
    return std::move(str);
}

String On_Str_VkVideoCapabilityFlagsKHR(VkVideoCapabilityFlagsKHR f) {
    String str = "|";
    if (f & VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR) {
        str += "PROTECTED_CONTENT|";
    }
    if (f & VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR) {
        str += "SEPARATE_REFERENCE_IMAGES|";
    }
    return std::move(str);
}

String On_Str_VkVideoSessionCreateFlagsKHR(VkVideoSessionCreateFlagsKHR f) {
    String str = "|";
    if (f & VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR) {
        str += "PROTECTED_CONTENT|";
    }
    if (f & VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_PARAMETER_OPTIMIZATIONS_BIT_KHR) {
        str += "ALLOW_ENCODE_PARAMETER_OPTIMIZATIONS|";
    }
    if (f & VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR) {
        str += "INLINE_QUERIES|";
    }
    return std::move(str);
}

String On_Str_VkVideoCodingControlFlagsKHR(VkVideoCodingControlFlagsKHR f) {
    String str = "|";
    if (f & VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR) {
        str += "RESET|";
    }
    if (f & VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR) {
        str += "ENCODE_RATE_CONTROL|";
    }
    if (f & VK_VIDEO_CODING_CONTROL_ENCODE_QUALITY_LEVEL_BIT_KHR) {
        str += "ENCODE_QUALITY_LEVEL|";
    }
    return std::move(str);
}

String On_Str_VkVideoDecodeCapabilityFlagsKHR(VkVideoDecodeCapabilityFlagsKHR f) {
    String str = "|";
    if (f & VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR) {
        str += "DPB_AND_OUTPUT_COINCIDE|";
    }
    if (f & VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR) {
        str += "DPB_AND_OUTPUT_DISTINCT|";
    }
    return std::move(str);
}

String On_Str_VkVideoDecodeUsageFlagsKHR(VkVideoDecodeUsageFlagsKHR f) {
    String str = "|";
    if (f & VK_VIDEO_DECODE_USAGE_DEFAULT_KHR) {
        str += "DEFAULT_KHR|";
    }
    if (f & VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR) {
        str += "TRANSCODING|";
    }
    if (f & VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR) {
        str += "OFFLINE|";
    }
    if (f & VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR) {
        str += "STREAMING|";
    }
    return std::move(str);
}

String On_Str_VkVideoEncodeH264CapabilityFlagsKHR(VkVideoEncodeH264CapabilityFlagsKHR f) {
    String str = "|";
    if (f & VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_KHR) {
        str += "HRD_COMPLIANCE|";
    }
    if (f & VK_VIDEO_ENCODE_H264_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR) {
        str += "PREDICTION_WEIGHT_TABLE_GENERATED|";
    }
    if (f & VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_KHR) {
        str += "ROW_UNALIGNED_SLICE|";
    }
    if (f & VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_KHR) {
        str += "DIFFERENT_SLICE_TYPE|";
    }
    if (f & VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR) {
        str += "B_FRAME_IN_L0_LIST|";
    }
    if (f & VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR) {
        str += "B_FRAME_IN_L1_LIST|";
    }
    if (f & VK_VIDEO_ENCODE_H264_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR) {
        str += "PER_PICTURE_TYPE_MIN_MAX_QP|";
    }
    if (f & VK_VIDEO_ENCODE_H264_CAPABILITY_PER_SLICE_CONSTANT_QP_BIT_KHR) {
        str += "PER_SLICE_CONSTANT_QP|";
    }
    if (f & VK_VIDEO_ENCODE_H264_CAPABILITY_GENERATE_PREFIX_NALU_BIT_KHR) {
        str += "GENERATE_PREFIX_NALU|";
    }
    return std::move(str);
}

String On_Str_VkVideoEncodeH264StdFlagsKHR(VkVideoEncodeH264StdFlagsKHR f) {
    String str = "|";
    if (f & VK_VIDEO_ENCODE_H264_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR) {
        str += "SEPARATE_COLOR_PLANE_FLAG_SET|";
    }
    if (f & VK_VIDEO_ENCODE_H264_STD_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG_SET_BIT_KHR) {
        str += "QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG_SET|";
    }
    if (f & VK_VIDEO_ENCODE_H264_STD_SCALING_MATRIX_PRESENT_FLAG_SET_BIT_KHR) {
        str += "SCALING_MATRIX_PRESENT_FLAG_SET|";
    }
    if (f & VK_VIDEO_ENCODE_H264_STD_CHROMA_QP_INDEX_OFFSET_BIT_KHR) {
        str += "CHROMA_QP_INDEX_OFFSET|";
    }
    if (f & VK_VIDEO_ENCODE_H264_STD_SECOND_CHROMA_QP_INDEX_OFFSET_BIT_KHR) {
        str += "SECOND_CHROMA_QP_INDEX_OFFSET|";
    }
    if (f & VK_VIDEO_ENCODE_H264_STD_PIC_INIT_QP_MINUS26_BIT_KHR) {
        str += "PIC_INIT_QP_MINUS26|";
    }
    if (f & VK_VIDEO_ENCODE_H264_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR) {
        str += "WEIGHTED_PRED_FLAG_SET|";
    }
    if (f & VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_EXPLICIT_BIT_KHR) {
        str += "WEIGHTED_BIPRED_IDC_EXPLICIT|";
    }
    if (f & VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_IMPLICIT_BIT_KHR) {
        str += "WEIGHTED_BIPRED_IDC_IMPLICIT|";
    }
    if (f & VK_VIDEO_ENCODE_H264_STD_TRANSFORM_8X8_MODE_FLAG_SET_BIT_KHR) {
        str += "TRANSFORM_8X8_MODE_FLAG_SET|";
    }
    if (f & VK_VIDEO_ENCODE_H264_STD_DIRECT_SPATIAL_MV_PRED_FLAG_UNSET_BIT_KHR) {
        str += "DIRECT_SPATIAL_MV_PRED_FLAG_UNSET|";
    }
    if (f & VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_UNSET_BIT_KHR) {
        str += "ENTROPY_CODING_MODE_FLAG_UNSET|";
    }
    if (f & VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_SET_BIT_KHR) {
        str += "ENTROPY_CODING_MODE_FLAG_SET|";
    }
    if (f & VK_VIDEO_ENCODE_H264_STD_DIRECT_8X8_INFERENCE_FLAG_UNSET_BIT_KHR) {
        str += "DIRECT_8X8_INFERENCE_FLAG_UNSET|";
    }
    if (f & VK_VIDEO_ENCODE_H264_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR) {
        str += "CONSTRAINED_INTRA_PRED_FLAG_SET|";
    }
    if (f & VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_DISABLED_BIT_KHR) {
        str += "DEBLOCKING_FILTER_DISABLED|";
    }
    if (f & VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_ENABLED_BIT_KHR) {
        str += "DEBLOCKING_FILTER_ENABLED|";
    }
    if (f & VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_PARTIAL_BIT_KHR) {
        str += "DEBLOCKING_FILTER_PARTIAL|";
    }
    if (f & VK_VIDEO_ENCODE_H264_STD_SLICE_QP_DELTA_BIT_KHR) {
        str += "SLICE_QP_DELTA|";
    }
    if (f & VK_VIDEO_ENCODE_H264_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR) {
        str += "DIFFERENT_SLICE_QP_DELTA|";
    }
    return std::move(str);
}

String On_Str_VkVideoEncodeH264RateControlFlagsKHR(VkVideoEncodeH264RateControlFlagsKHR f) {
    String str = "|";
    if (f & VK_VIDEO_ENCODE_H264_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR) {
        str += "ATTEMPT_HRD_COMPLIANCE|";
    }
    if (f & VK_VIDEO_ENCODE_H264_RATE_CONTROL_REGULAR_GOP_BIT_KHR) {
        str += "REGULAR_GOP|";
    }
    if (f & VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR) {
        str += "REFERENCE_PATTERN_FLAT|";
    }
    if (f & VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR) {
        str += "REFERENCE_PATTERN_DYADIC|";
    }
    if (f & VK_VIDEO_ENCODE_H264_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR) {
        str += "TEMPORAL_LAYER_PATTERN_DYADIC|";
    }
    return std::move(str);
}

String On_Str_VkVideoEncodeH265CapabilityFlagsKHR(VkVideoEncodeH265CapabilityFlagsKHR f) {
    String str = "|";
    if (f & VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_KHR) {
        str += "HRD_COMPLIANCE|";
    }
    if (f & VK_VIDEO_ENCODE_H265_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR) {
        str += "PREDICTION_WEIGHT_TABLE_GENERATED|";
    }
    if (f & VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_KHR) {
        str += "ROW_UNALIGNED_SLICE_SEGMENT|";
    }
    if (f & VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_SEGMENT_TYPE_BIT_KHR) {
        str += "DIFFERENT_SLICE_SEGMENT_TYPE|";
    }
    if (f & VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR) {
        str += "B_FRAME_IN_L0_LIST|";
    }
    if (f & VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR) {
        str += "B_FRAME_IN_L1_LIST|";
    }
    if (f & VK_VIDEO_ENCODE_H265_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR) {
        str += "PER_PICTURE_TYPE_MIN_MAX_QP|";
    }
    if (f & VK_VIDEO_ENCODE_H265_CAPABILITY_PER_SLICE_SEGMENT_CONSTANT_QP_BIT_KHR) {
        str += "PER_SLICE_SEGMENT_CONSTANT_QP|";
    }
    if (f & VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILES_PER_SLICE_SEGMENT_BIT_KHR) {
        str += "MULTIPLE_TILES_PER_SLICE_SEGMENT|";
    }
    if (f & VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_SEGMENTS_PER_TILE_BIT_KHR) {
        str += "MULTIPLE_SLICE_SEGMENTS_PER_TILE|";
    }
    return std::move(str);
}

String On_Str_VkVideoEncodeH265StdFlagsKHR(VkVideoEncodeH265StdFlagsKHR f) {
    String str = "|";
    if (f & VK_VIDEO_ENCODE_H265_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR) {
        str += "SEPARATE_COLOR_PLANE_FLAG_SET|";
    }
    if (f & VK_VIDEO_ENCODE_H265_STD_SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG_SET_BIT_KHR) {
        str += "SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG_SET|";
    }
    if (f & VK_VIDEO_ENCODE_H265_STD_SCALING_LIST_DATA_PRESENT_FLAG_SET_BIT_KHR) {
        str += "SCALING_LIST_DATA_PRESENT_FLAG_SET|";
    }
    if (f & VK_VIDEO_ENCODE_H265_STD_PCM_ENABLED_FLAG_SET_BIT_KHR) {
        str += "PCM_ENABLED_FLAG_SET|";
    }
    if (f & VK_VIDEO_ENCODE_H265_STD_SPS_TEMPORAL_MVP_ENABLED_FLAG_SET_BIT_KHR) {
        str += "SPS_TEMPORAL_MVP_ENABLED_FLAG_SET|";
    }
    if (f & VK_VIDEO_ENCODE_H265_STD_INIT_QP_MINUS26_BIT_KHR) {
        str += "INIT_QP_MINUS26|";
    }
    if (f & VK_VIDEO_ENCODE_H265_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR) {
        str += "WEIGHTED_PRED_FLAG_SET|";
    }
    if (f & VK_VIDEO_ENCODE_H265_STD_WEIGHTED_BIPRED_FLAG_SET_BIT_KHR) {
        str += "WEIGHTED_BIPRED_FLAG_SET|";
    }
    if (f & VK_VIDEO_ENCODE_H265_STD_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_KHR) {
        str += "LOG2_PARALLEL_MERGE_LEVEL_MINUS2|";
    }
    if (f & VK_VIDEO_ENCODE_H265_STD_SIGN_DATA_HIDING_ENABLED_FLAG_SET_BIT_KHR) {
        str += "SIGN_DATA_HIDING_ENABLED_FLAG_SET|";
    }
    if (f & VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_SET_BIT_KHR) {
        str += "TRANSFORM_SKIP_ENABLED_FLAG_SET|";
    }
    if (f & VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_UNSET_BIT_KHR) {
        str += "TRANSFORM_SKIP_ENABLED_FLAG_UNSET|";
    }
    if (f & VK_VIDEO_ENCODE_H265_STD_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG_SET_BIT_KHR) {
        str += "PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG_SET|";
    }
    if (f & VK_VIDEO_ENCODE_H265_STD_TRANSQUANT_BYPASS_ENABLED_FLAG_SET_BIT_KHR) {
        str += "TRANSQUANT_BYPASS_ENABLED_FLAG_SET|";
    }
    if (f & VK_VIDEO_ENCODE_H265_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR) {
        str += "CONSTRAINED_INTRA_PRED_FLAG_SET|";
    }
    if (f & VK_VIDEO_ENCODE_H265_STD_ENTROPY_CODING_SYNC_ENABLED_FLAG_SET_BIT_KHR) {
        str += "ENTROPY_CODING_SYNC_ENABLED_FLAG_SET|";
    }
    if (f & VK_VIDEO_ENCODE_H265_STD_DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG_SET_BIT_KHR) {
        str += "DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG_SET|";
    }
    if (f & VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG_SET_BIT_KHR) {
        str += "DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG_SET|";
    }
    if (f & VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENT_FLAG_SET_BIT_KHR) {
        str += "DEPENDENT_SLICE_SEGMENT_FLAG_SET|";
    }
    if (f & VK_VIDEO_ENCODE_H265_STD_SLICE_QP_DELTA_BIT_KHR) {
        str += "SLICE_QP_DELTA|";
    }
    if (f & VK_VIDEO_ENCODE_H265_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR) {
        str += "DIFFERENT_SLICE_QP_DELTA|";
    }
    return std::move(str);
}

String On_Str_VkVideoEncodeH265CtbSizeFlagsKHR(VkVideoEncodeH265CtbSizeFlagsKHR f) {
    String str = "|";
    if (f & VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_KHR) {
        str += "16|";
    }
    if (f & VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_KHR) {
        str += "32|";
    }
    if (f & VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_KHR) {
        str += "64|";
    }
    return std::move(str);
}

String On_Str_VkVideoEncodeH265TransformBlockSizeFlagsKHR(VkVideoEncodeH265TransformBlockSizeFlagsKHR f) {
    String str = "|";
    if (f & VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_KHR) {
        str += "4|";
    }
    if (f & VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_KHR) {
        str += "8|";
    }
    if (f & VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_KHR) {
        str += "16|";
    }
    if (f & VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_KHR) {
        str += "32|";
    }
    return std::move(str);
}

String On_Str_VkVideoEncodeH265RateControlFlagsKHR(VkVideoEncodeH265RateControlFlagsKHR f) {
    String str = "|";
    if (f & VK_VIDEO_ENCODE_H265_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR) {
        str += "ATTEMPT_HRD_COMPLIANCE|";
    }
    if (f & VK_VIDEO_ENCODE_H265_RATE_CONTROL_REGULAR_GOP_BIT_KHR) {
        str += "REGULAR_GOP|";
    }
    if (f & VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR) {
        str += "REFERENCE_PATTERN_FLAT|";
    }
    if (f & VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR) {
        str += "REFERENCE_PATTERN_DYADIC|";
    }
    if (f & VK_VIDEO_ENCODE_H265_RATE_CONTROL_TEMPORAL_SUB_LAYER_PATTERN_DYADIC_BIT_KHR) {
        str += "TEMPORAL_SUB_LAYER_PATTERN_DYADIC|";
    }
    return std::move(str);
}

String On_Str_VkVideoDecodeH264PictureLayoutFlagsKHR(VkVideoDecodeH264PictureLayoutFlagsKHR f) {
    String str = "|";
    if (f & VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR) {
        str += "PROGRESSIVE_KHR|";
    }
    if (f & VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR) {
        str += "INTERLACED_INTERLEAVED_LINES|";
    }
    if (f & VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR) {
        str += "INTERLACED_SEPARATE_PLANES|";
    }
    return std::move(str);
}

String On_Str_VkPerformanceCounterDescriptionFlagsKHR(VkPerformanceCounterDescriptionFlagsKHR f) {
    String str = "|";
    if (f & VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR) {
        str += "PERFORMANCE_IMPACTING|";
    }
    if (f & VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR) {
        str += "CONCURRENTLY_IMPACTED|";
    }
    return std::move(str);
}

String On_Str_VkAcquireProfilingLockFlagsKHR(VkAcquireProfilingLockFlagsKHR f) {
    String str = "|";
    return std::move(str);
}

String On_Str_VkMemoryUnmapFlagsKHR(VkMemoryUnmapFlagsKHR f) {
    String str = "|";
    if (f & VK_MEMORY_UNMAP_RESERVE_BIT_EXT) {
        str += "RESERVE|";
    }
    return std::move(str);
}

String On_Str_VkVideoEncodeFlagsKHR(VkVideoEncodeFlagsKHR f) {
    String str = "|";
    return std::move(str);
}

String On_Str_VkVideoEncodeCapabilityFlagsKHR(VkVideoEncodeCapabilityFlagsKHR f) {
    String str = "|";
    if (f & VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR) {
        str += "PRECEDING_EXTERNALLY_ENCODED_BYTES|";
    }
    if (f & VK_VIDEO_ENCODE_CAPABILITY_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_DETECTION_BIT_KHR) {
        str += "INSUFFICIENT_BITSTREAM_BUFFER_RANGE_DETECTION|";
    }
    return std::move(str);
}

String On_Str_VkVideoEncodeRateControlModeFlagsKHR(VkVideoEncodeRateControlModeFlagsKHR f) {
    String str = "|";
    if (f & VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DEFAULT_KHR) {
        str += "DEFAULT_KHR|";
    }
    if (f & VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR) {
        str += "DISABLED|";
    }
    if (f & VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR) {
        str += "CBR|";
    }
    if (f & VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR) {
        str += "VBR|";
    }
    return std::move(str);
}

String On_Str_VkVideoEncodeFeedbackFlagsKHR(VkVideoEncodeFeedbackFlagsKHR f) {
    String str = "|";
    if (f & VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BUFFER_OFFSET_BIT_KHR) {
        str += "BITSTREAM_BUFFER_OFFSET|";
    }
    if (f & VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BYTES_WRITTEN_BIT_KHR) {
        str += "BITSTREAM_BYTES_WRITTEN|";
    }
    if (f & VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_HAS_OVERRIDES_BIT_KHR) {
        str += "BITSTREAM_HAS_OVERRIDES|";
    }
    return std::move(str);
}

String On_Str_VkVideoEncodeUsageFlagsKHR(VkVideoEncodeUsageFlagsKHR f) {
    String str = "|";
    if (f & VK_VIDEO_ENCODE_USAGE_DEFAULT_KHR) {
        str += "DEFAULT_KHR|";
    }
    if (f & VK_VIDEO_ENCODE_USAGE_TRANSCODING_BIT_KHR) {
        str += "TRANSCODING|";
    }
    if (f & VK_VIDEO_ENCODE_USAGE_STREAMING_BIT_KHR) {
        str += "STREAMING|";
    }
    if (f & VK_VIDEO_ENCODE_USAGE_RECORDING_BIT_KHR) {
        str += "RECORDING|";
    }
    if (f & VK_VIDEO_ENCODE_USAGE_CONFERENCING_BIT_KHR) {
        str += "CONFERENCING|";
    }
    return std::move(str);
}

String On_Str_VkVideoEncodeContentFlagsKHR(VkVideoEncodeContentFlagsKHR f) {
    String str = "|";
    if (f & VK_VIDEO_ENCODE_CONTENT_DEFAULT_KHR) {
        str += "DEFAULT_KHR|";
    }
    if (f & VK_VIDEO_ENCODE_CONTENT_CAMERA_BIT_KHR) {
        str += "CAMERA|";
    }
    if (f & VK_VIDEO_ENCODE_CONTENT_DESKTOP_BIT_KHR) {
        str += "DESKTOP|";
    }
    if (f & VK_VIDEO_ENCODE_CONTENT_RENDERED_BIT_KHR) {
        str += "RENDERED|";
    }
    return std::move(str);
}

String On_Str_VkPipelineCreateFlags2KHR(VkPipelineCreateFlags2KHR f) {
    String str = "|";
    if (f & VK_PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHR) {
        str += "VK_PIPELINE_CREATE_2_DISABLE_OPTIMIZATION|";
    }
    if (f & VK_PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR) {
        str += "VK_PIPELINE_CREATE_2_ALLOW_DERIVATIVES|";
    }
    if (f & VK_PIPELINE_CREATE_2_DERIVATIVE_BIT_KHR) {
        str += "VK_PIPELINE_CREATE_2_DERIVATIVE|";
    }
    if (f & VK_PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR) {
        str += "VK_PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX|";
    }
    if (f & VK_PIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHR) {
        str += "VK_PIPELINE_CREATE_2_DISPATCH_BASE|";
    }
    if (f & VK_PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV) {
        str += "VK_PIPELINE_CREATE_2_DEFER_COMPILE|";
    }
    if (f & VK_PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR) {
        str += "VK_PIPELINE_CREATE_2_CAPTURE_STATISTICS|";
    }
    if (f & VK_PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR) {
        str += "VK_PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS|";
    }
    if (f & VK_PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR) {
        str += "VK_PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED|";
    }
    if (f & VK_PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR) {
        str += "VK_PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE|";
    }
    if (f & VK_PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT) {
        str += "VK_PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION|";
    }
    if (f & VK_PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT) {
        str += "VK_PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO|";
    }
    if (f & VK_PIPELINE_CREATE_2_LIBRARY_BIT_KHR) {
        str += "VK_PIPELINE_CREATE_2_LIBRARY|";
    }
    if (f & VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR) {
        str += "VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES|";
    }
    if (f & VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR) {
        str += "VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS|";
    }
    if (f & VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR) {
        str += "VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS|";
    }
    if (f & VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR) {
        str += "VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS|";
    }
    if (f & VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR) {
        str += "VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS|";
    }
    if (f & VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR) {
        str += "VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS|";
    }
    if (f & VK_PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR) {
        str += "VK_PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY|";
    }
    if (f & VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV) {
        str += "VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE|";
    }
    if (f & VK_PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV) {
        str += "VK_PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION|";
    }
    if (f & VK_PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR) {
        str += "VK_PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT|";
    }
    if (f & VK_PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT) {
        str += "VK_PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT|";
    }
    if (f & VK_PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT) {
        str += "VK_PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP|";
    }
    if (f & VK_PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT) {
        str += "VK_PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP|";
    }
    if (f & VK_PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT) {
        str += "VK_PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP|";
    }
    if (f & VK_PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT) {
        str += "VK_PIPELINE_CREATE_2_NO_PROTECTED_ACCESS|";
    }
    if (f & VK_PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT) {
        str += "VK_PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY|";
    }
    if (f & VK_PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV) {
        str += "VK_PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP|";
    }
    if (f & VK_PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT) {
        str += "VK_PIPELINE_CREATE_2_DESCRIPTOR_BUFFER|";
    }
    return std::move(str);
}

String On_Str_VkBufferUsageFlags2KHR(VkBufferUsageFlags2KHR f) {
    String str = "|";
    if (f & VK_BUFFER_USAGE_2_TRANSFER_SRC_BIT_KHR) {
        str += "VK_BUFFER_USAGE_2_TRANSFER_SRC|";
    }
    if (f & VK_BUFFER_USAGE_2_TRANSFER_DST_BIT_KHR) {
        str += "VK_BUFFER_USAGE_2_TRANSFER_DST|";
    }
    if (f & VK_BUFFER_USAGE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR) {
        str += "VK_BUFFER_USAGE_2_UNIFORM_TEXEL_BUFFER|";
    }
    if (f & VK_BUFFER_USAGE_2_STORAGE_TEXEL_BUFFER_BIT_KHR) {
        str += "VK_BUFFER_USAGE_2_STORAGE_TEXEL_BUFFER|";
    }
    if (f & VK_BUFFER_USAGE_2_UNIFORM_BUFFER_BIT_KHR) {
        str += "VK_BUFFER_USAGE_2_UNIFORM_BUFFER|";
    }
    if (f & VK_BUFFER_USAGE_2_STORAGE_BUFFER_BIT_KHR) {
        str += "VK_BUFFER_USAGE_2_STORAGE_BUFFER|";
    }
    if (f & VK_BUFFER_USAGE_2_INDEX_BUFFER_BIT_KHR) {
        str += "VK_BUFFER_USAGE_2_INDEX_BUFFER|";
    }
    if (f & VK_BUFFER_USAGE_2_VERTEX_BUFFER_BIT_KHR) {
        str += "VK_BUFFER_USAGE_2_VERTEX_BUFFER|";
    }
    if (f & VK_BUFFER_USAGE_2_INDIRECT_BUFFER_BIT_KHR) {
        str += "VK_BUFFER_USAGE_2_INDIRECT_BUFFER|";
    }
    if (f & VK_BUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDX) {
        str += "VK_BUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH|";
    }
    if (f & VK_BUFFER_USAGE_2_CONDITIONAL_RENDERING_BIT_EXT) {
        str += "VK_BUFFER_USAGE_2_CONDITIONAL_RENDERING|";
    }
    if (f & VK_BUFFER_USAGE_2_SHADER_BINDING_TABLE_BIT_KHR) {
        str += "VK_BUFFER_USAGE_2_SHADER_BINDING_TABLE|";
    }
    if (f & VK_BUFFER_USAGE_2_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT) {
        str += "VK_BUFFER_USAGE_2_TRANSFORM_FEEDBACK_BUFFER|";
    }
    if (f & VK_BUFFER_USAGE_2_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT) {
        str += "VK_BUFFER_USAGE_2_TRANSFORM_FEEDBACK_COUNTER_BUFFER|";
    }
    if (f & VK_BUFFER_USAGE_2_VIDEO_DECODE_SRC_BIT_KHR) {
        str += "VK_BUFFER_USAGE_2_VIDEO_DECODE_SRC|";
    }
    if (f & VK_BUFFER_USAGE_2_VIDEO_DECODE_DST_BIT_KHR) {
        str += "VK_BUFFER_USAGE_2_VIDEO_DECODE_DST|";
    }
    if (f & VK_BUFFER_USAGE_2_VIDEO_ENCODE_DST_BIT_KHR) {
        str += "VK_BUFFER_USAGE_2_VIDEO_ENCODE_DST|";
    }
    if (f & VK_BUFFER_USAGE_2_VIDEO_ENCODE_SRC_BIT_KHR) {
        str += "VK_BUFFER_USAGE_2_VIDEO_ENCODE_SRC|";
    }
    if (f & VK_BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT_KHR) {
        str += "VK_BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS|";
    }
    if (f & VK_BUFFER_USAGE_2_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR) {
        str += "VK_BUFFER_USAGE_2_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY|";
    }
    if (f & VK_BUFFER_USAGE_2_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR) {
        str += "VK_BUFFER_USAGE_2_ACCELERATION_STRUCTURE_STORAGE|";
    }
    if (f & VK_BUFFER_USAGE_2_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT) {
        str += "VK_BUFFER_USAGE_2_SAMPLER_DESCRIPTOR_BUFFER|";
    }
    if (f & VK_BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT) {
        str += "VK_BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUFFER|";
    }
    if (f & VK_BUFFER_USAGE_2_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT) {
        str += "VK_BUFFER_USAGE_2_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER|";
    }
    if (f & VK_BUFFER_USAGE_2_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT) {
        str += "VK_BUFFER_USAGE_2_MICROMAP_BUILD_INPUT_READ_ONLY|";
    }
    if (f & VK_BUFFER_USAGE_2_MICROMAP_STORAGE_BIT_EXT) {
        str += "VK_BUFFER_USAGE_2_MICROMAP_STORAGE|";
    }
    return std::move(str);
}

String On_Str_VkDebugReportFlagsEXT(VkDebugReportFlagsEXT f) {
    String str = "|";
    if (f & VK_DEBUG_REPORT_INFORMATION_BIT_EXT) {
        str += "INFORMATION|";
    }
    if (f & VK_DEBUG_REPORT_WARNING_BIT_EXT) {
        str += "WARNING|";
    }
    if (f & VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT) {
        str += "PERFORMANCE_WARNING|";
    }
    if (f & VK_DEBUG_REPORT_ERROR_BIT_EXT) {
        str += "ERROR|";
    }
    if (f & VK_DEBUG_REPORT_DEBUG_BIT_EXT) {
        str += "DEBUG|";
    }
    return std::move(str);
}

String On_Str_VkExternalMemoryHandleTypeFlagsNV(VkExternalMemoryHandleTypeFlagsNV f) {
    String str = "|";
    if (f & VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV) {
        str += "OPAQUE_WIN32|";
    }
    if (f & VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV) {
        str += "OPAQUE_WIN32_KMT|";
    }
    if (f & VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV) {
        str += "D3D11_IMAGE|";
    }
    if (f & VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV) {
        str += "D3D11_IMAGE_KMT|";
    }
    return std::move(str);
}

String On_Str_VkExternalMemoryFeatureFlagsNV(VkExternalMemoryFeatureFlagsNV f) {
    String str = "|";
    if (f & VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV) {
        str += "DEDICATED_ONLY|";
    }
    if (f & VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV) {
        str += "EXPORTABLE|";
    }
    if (f & VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV) {
        str += "IMPORTABLE|";
    }
    return std::move(str);
}

String On_Str_VkConditionalRenderingFlagsEXT(VkConditionalRenderingFlagsEXT f) {
    String str = "|";
    if (f & VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT) {
        str += "INVERTED|";
    }
    return std::move(str);
}

String On_Str_VkSurfaceCounterFlagsEXT(VkSurfaceCounterFlagsEXT f) {
    String str = "|";
    if (f & VK_SURFACE_COUNTER_VBLANK_BIT_EXT) {
        str += "VBLANK|";
    }
    return std::move(str);
}

String On_Str_VkDebugUtilsMessageSeverityFlagsEXT(VkDebugUtilsMessageSeverityFlagsEXT f) {
    String str = "|";
    if (f & VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT) {
        str += "VERBOSE|";
    }
    if (f & VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT) {
        str += "INFO|";
    }
    if (f & VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT) {
        str += "WARNING|";
    }
    if (f & VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT) {
        str += "ERROR|";
    }
    return std::move(str);
}

String On_Str_VkDebugUtilsMessageTypeFlagsEXT(VkDebugUtilsMessageTypeFlagsEXT f) {
    String str = "|";
    if (f & VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT) {
        str += "GENERAL|";
    }
    if (f & VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT) {
        str += "VALIDATION|";
    }
    if (f & VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT) {
        str += "PERFORMANCE|";
    }
    if (f & VK_DEBUG_UTILS_MESSAGE_TYPE_DEVICE_ADDRESS_BINDING_BIT_EXT) {
        str += "DEVICE_ADDRESS_BINDING|";
    }
    return std::move(str);
}

String On_Str_VkGeometryFlagsKHR(VkGeometryFlagsKHR f) {
    String str = "|";
    if (f & VK_GEOMETRY_OPAQUE_BIT_KHR) {
        str += "OPAQUE|";
    }
    if (f & VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR) {
        str += "NO_DUPLICATE_ANY_HIT_INVOCATION|";
    }
    return std::move(str);
}

String On_Str_VkGeometryInstanceFlagsKHR(VkGeometryInstanceFlagsKHR f) {
    String str = "|";
    if (f & VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR) {
        str += "TRIANGLE_FACING_CULL_DISABLE|";
    }
    if (f & VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR) {
        str += "TRIANGLE_FLIP_FACING|";
    }
    if (f & VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR) {
        str += "FORCE_OPAQUE|";
    }
    if (f & VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR) {
        str += "FORCE_NO_OPAQUE|";
    }
    if (f & VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT) {
        str += "FORCE_OPACITY_MICROMAP_2_STATE_EXT|";
    }
    if (f & VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT) {
        str += "DISABLE_OPACITY_MICROMAPS_EXT|";
    }
    return std::move(str);
}

String On_Str_VkBuildAccelerationStructureFlagsKHR(VkBuildAccelerationStructureFlagsKHR f) {
    String str = "|";
    if (f & VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR) {
        str += "ALLOW_UPDATE|";
    }
    if (f & VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR) {
        str += "ALLOW_COMPACTION|";
    }
    if (f & VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR) {
        str += "PREFER_FAST_TRACE|";
    }
    if (f & VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR) {
        str += "PREFER_FAST_BUILD|";
    }
    if (f & VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR) {
        str += "LOW_MEMORY|";
    }
    if (f & VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV) {
        str += "MOTION|";
    }
    if (f & VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT) {
        str += "ALLOW_OPACITY_MICROMAP_UPDATE_EXT|";
    }
    if (f & VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT) {
        str += "ALLOW_DISABLE_OPACITY_MICROMAPS_EXT|";
    }
    if (f & VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT) {
        str += "ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT|";
    }
#ifdef VK_ENABLE_BETA_EXTENSIONS
    if (f & VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_NV) {
        str += "ALLOW_DISPLACEMENT_MICROMAP_UPDATE_NV|";
    }
#endif // VK_ENABLE_BETA_EXTENSIONS
    if (f & VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR) {
        str += "ALLOW_DATA_ACCESS_KHR|";
    }
    return std::move(str);
}

String On_Str_VkPipelineCompilerControlFlagsAMD(VkPipelineCompilerControlFlagsAMD f) {
    String str = "|";
    return std::move(str);
}

String On_Str_VkShaderCorePropertiesFlagsAMD(VkShaderCorePropertiesFlagsAMD f) {
    String str = "|";
    return std::move(str);
}

String On_Str_VkHostImageCopyFlagsEXT(VkHostImageCopyFlagsEXT f) {
    String str = "|";
    if (f & VK_HOST_IMAGE_COPY_MEMCPY_EXT) {
        str += "MEMCPY_EXT|";
    }
    return std::move(str);
}

String On_Str_VkPresentScalingFlagsEXT(VkPresentScalingFlagsEXT f) {
    String str = "|";
    if (f & VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT) {
        str += "ONE_TO_ONE|";
    }
    if (f & VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT) {
        str += "ASPECT_RATIO_STRETCH|";
    }
    if (f & VK_PRESENT_SCALING_STRETCH_BIT_EXT) {
        str += "STRETCH|";
    }
    return std::move(str);
}

String On_Str_VkPresentGravityFlagsEXT(VkPresentGravityFlagsEXT f) {
    String str = "|";
    if (f & VK_PRESENT_GRAVITY_MIN_BIT_EXT) {
        str += "MIN|";
    }
    if (f & VK_PRESENT_GRAVITY_MAX_BIT_EXT) {
        str += "MAX|";
    }
    if (f & VK_PRESENT_GRAVITY_CENTERED_BIT_EXT) {
        str += "CENTERED|";
    }
    return std::move(str);
}

String On_Str_VkIndirectStateFlagsNV(VkIndirectStateFlagsNV f) {
    String str = "|";
    if (f & VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV) {
        str += "FLAG_FRONTFACE|";
    }
    return std::move(str);
}

String On_Str_VkIndirectCommandsLayoutUsageFlagsNV(VkIndirectCommandsLayoutUsageFlagsNV f) {
    String str = "|";
    if (f & VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV) {
        str += "EXPLICIT_PREPROCESS|";
    }
    if (f & VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV) {
        str += "INDEXED_SEQUENCES|";
    }
    if (f & VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV) {
        str += "UNORDERED_SEQUENCES|";
    }
    return std::move(str);
}

String On_Str_VkDeviceDiagnosticsConfigFlagsNV(VkDeviceDiagnosticsConfigFlagsNV f) {
    String str = "|";
    if (f & VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV) {
        str += "ENABLE_SHADER_DEBUG_INFO|";
    }
    if (f & VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV) {
        str += "ENABLE_RESOURCE_TRACKING|";
    }
    if (f & VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV) {
        str += "ENABLE_AUTOMATIC_CHECKPOINTS|";
    }
    if (f & VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_ERROR_REPORTING_BIT_NV) {
        str += "ENABLE_SHADER_ERROR_REPORTING|";
    }
    return std::move(str);
}

#ifdef VK_USE_PLATFORM_METAL_EXT
String On_Str_VkExportMetalObjectTypeFlagsEXT(VkExportMetalObjectTypeFlagsEXT f) {
    String str = "|";
    if (f & VK_EXPORT_METAL_OBJECT_TYPE_METAL_DEVICE_BIT_EXT) {
        str += "METAL_DEVICE|";
    }
    if (f & VK_EXPORT_METAL_OBJECT_TYPE_METAL_COMMAND_QUEUE_BIT_EXT) {
        str += "METAL_COMMAND_QUEUE|";
    }
    if (f & VK_EXPORT_METAL_OBJECT_TYPE_METAL_BUFFER_BIT_EXT) {
        str += "METAL_BUFFER|";
    }
    if (f & VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT) {
        str += "METAL_TEXTURE|";
    }
    if (f & VK_EXPORT_METAL_OBJECT_TYPE_METAL_IOSURFACE_BIT_EXT) {
        str += "METAL_IOSURFACE|";
    }
    if (f & VK_EXPORT_METAL_OBJECT_TYPE_METAL_SHARED_EVENT_BIT_EXT) {
        str += "METAL_SHARED_EVENT|";
    }
    return std::move(str);
}
#endif // VK_USE_PLATFORM_METAL_EXT

String On_Str_VkGraphicsPipelineLibraryFlagsEXT(VkGraphicsPipelineLibraryFlagsEXT f) {
    String str = "|";
    if (f & VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT) {
        str += "VERTEX_INPUT_INTERFACE|";
    }
    if (f & VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT) {
        str += "PRE_RASTERIZATION_SHADERS|";
    }
    if (f & VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT) {
        str += "FRAGMENT_SHADER|";
    }
    if (f & VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT) {
        str += "FRAGMENT_OUTPUT_INTERFACE|";
    }
    return std::move(str);
}

String On_Str_VkImageCompressionFlagsEXT(VkImageCompressionFlagsEXT f) {
    String str = "|";
    if (f & VK_IMAGE_COMPRESSION_DEFAULT_EXT) {
        str += "DEFAULT_EXT|";
    }
    if (f & VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT) {
        str += "FIXED_RATE_DEFAULT_EXT|";
    }
    if (f & VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT) {
        str += "FIXED_RATE_EXPLICIT_EXT|";
    }
    if (f & VK_IMAGE_COMPRESSION_DISABLED_EXT) {
        str += "DISABLED_EXT|";
    }
    return std::move(str);
}

String On_Str_VkImageCompressionFixedRateFlagsEXT(VkImageCompressionFixedRateFlagsEXT f) {
    String str = "|";
    if (f & VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT) {
        str += "NONE_EXT|";
    }
    if (f & VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT) {
        str += "1BPC|";
    }
    if (f & VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT) {
        str += "2BPC|";
    }
    if (f & VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT) {
        str += "3BPC|";
    }
    if (f & VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT) {
        str += "4BPC|";
    }
    if (f & VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT) {
        str += "5BPC|";
    }
    if (f & VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT) {
        str += "6BPC|";
    }
    if (f & VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT) {
        str += "7BPC|";
    }
    if (f & VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT) {
        str += "8BPC|";
    }
    if (f & VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT) {
        str += "9BPC|";
    }
    if (f & VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT) {
        str += "10BPC|";
    }
    if (f & VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT) {
        str += "11BPC|";
    }
    if (f & VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT) {
        str += "12BPC|";
    }
    if (f & VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT) {
        str += "13BPC|";
    }
    if (f & VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT) {
        str += "14BPC|";
    }
    if (f & VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT) {
        str += "15BPC|";
    }
    if (f & VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT) {
        str += "16BPC|";
    }
    if (f & VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT) {
        str += "17BPC|";
    }
    if (f & VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT) {
        str += "18BPC|";
    }
    if (f & VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT) {
        str += "19BPC|";
    }
    if (f & VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT) {
        str += "20BPC|";
    }
    if (f & VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT) {
        str += "21BPC|";
    }
    if (f & VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT) {
        str += "22BPC|";
    }
    if (f & VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT) {
        str += "23BPC|";
    }
    if (f & VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT) {
        str += "24BPC|";
    }
    return std::move(str);
}

String On_Str_VkDeviceAddressBindingFlagsEXT(VkDeviceAddressBindingFlagsEXT f) {
    String str = "|";
    if (f & VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT) {
        str += "INTERNAL_OBJECT|";
    }
    return std::move(str);
}

#ifdef VK_USE_PLATFORM_FUCHSIA
String On_Str_VkImageConstraintsInfoFlagsFUCHSIA(VkImageConstraintsInfoFlagsFUCHSIA f) {
    String str = "|";
    if (f & VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_RARELY_FUCHSIA) {
        str += "CPU_READ_RARELY_FUCHSIA|";
    }
    if (f & VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_OFTEN_FUCHSIA) {
        str += "CPU_READ_OFTEN_FUCHSIA|";
    }
    if (f & VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_RARELY_FUCHSIA) {
        str += "CPU_WRITE_RARELY_FUCHSIA|";
    }
    if (f & VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_OFTEN_FUCHSIA) {
        str += "CPU_WRITE_OFTEN_FUCHSIA|";
    }
    if (f & VK_IMAGE_CONSTRAINTS_INFO_PROTECTED_OPTIONAL_FUCHSIA) {
        str += "PROTECTED_OPTIONAL_FUCHSIA|";
    }
    return std::move(str);
}
#endif // VK_USE_PLATFORM_FUCHSIA

String On_Str_VkFrameBoundaryFlagsEXT(VkFrameBoundaryFlagsEXT f) {
    String str = "|";
    if (f & VK_FRAME_BOUNDARY_FRAME_END_BIT_EXT) {
        str += "FRAME_END|";
    }
    return std::move(str);
}

String On_Str_VkBuildMicromapFlagsEXT(VkBuildMicromapFlagsEXT f) {
    String str = "|";
    if (f & VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT) {
        str += "PREFER_FAST_TRACE|";
    }
    if (f & VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT) {
        str += "PREFER_FAST_BUILD|";
    }
    if (f & VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT) {
        str += "ALLOW_COMPACTION|";
    }
    return std::move(str);
}

String On_Str_VkMicromapCreateFlagsEXT(VkMicromapCreateFlagsEXT f) {
    String str = "|";
    if (f & VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT) {
        str += "DEVICE_ADDRESS_CAPTURE_REPLAY|";
    }
    return std::move(str);
}

String On_Str_VkPhysicalDeviceSchedulingControlsFlagsARM(VkPhysicalDeviceSchedulingControlsFlagsARM f) {
    String str = "|";
    if (f & VK_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_SHADER_CORE_COUNT_ARM) {
        str += "VK_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_SHADER_CORE_COUNT_ARM|";
    }
    return std::move(str);
}

String On_Str_VkMemoryDecompressionMethodFlagsNV(VkMemoryDecompressionMethodFlagsNV f) {
    String str = "|";
    if (f & VK_MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NV) {
        str += "GDEFLATE_1_0|";
    }
    return std::move(str);
}

String On_Str_VkOpticalFlowGridSizeFlagsNV(VkOpticalFlowGridSizeFlagsNV f) {
    String str = "|";
    if (f & VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV) {
        str += "UNKNOWN_NV|";
    }
    if (f & VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV) {
        str += "1X1|";
    }
    if (f & VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV) {
        str += "2X2|";
    }
    if (f & VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV) {
        str += "4X4|";
    }
    if (f & VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV) {
        str += "8X8|";
    }
    return std::move(str);
}

String On_Str_VkOpticalFlowUsageFlagsNV(VkOpticalFlowUsageFlagsNV f) {
    String str = "|";
    if (f & VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV) {
        str += "UNKNOWN_NV|";
    }
    if (f & VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV) {
        str += "INPUT|";
    }
    if (f & VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV) {
        str += "OUTPUT|";
    }
    if (f & VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV) {
        str += "HINT|";
    }
    if (f & VK_OPTICAL_FLOW_USAGE_COST_BIT_NV) {
        str += "COST|";
    }
    if (f & VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV) {
        str += "GLOBAL_FLOW|";
    }
    return std::move(str);
}

String On_Str_VkOpticalFlowSessionCreateFlagsNV(VkOpticalFlowSessionCreateFlagsNV f) {
    String str = "|";
    if (f & VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV) {
        str += "ENABLE_HINT|";
    }
    if (f & VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV) {
        str += "ENABLE_COST|";
    }
    if (f & VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV) {
        str += "ENABLE_GLOBAL_FLOW|";
    }
    if (f & VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV) {
        str += "ALLOW_REGIONS|";
    }
    if (f & VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV) {
        str += "BOTH_DIRECTIONS|";
    }
    return std::move(str);
}

String On_Str_VkOpticalFlowExecuteFlagsNV(VkOpticalFlowExecuteFlagsNV f) {
    String str = "|";
    if (f & VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV) {
        str += "DISABLE_TEMPORAL_HINTS|";
    }
    return std::move(str);
}

String On_Str_VkShaderCreateFlagsEXT(VkShaderCreateFlagsEXT f) {
    String str = "|";
    if (f & VK_SHADER_CREATE_LINK_STAGE_BIT_EXT) {
        str += "LINK_STAGE|";
    }
    if (f & VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT) {
        str += "ALLOW_VARYING_SUBGROUP_SIZE|";
    }
    if (f & VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT) {
        str += "REQUIRE_FULL_SUBGROUPS|";
    }
    if (f & VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT) {
        str += "NO_TASK_SHADER|";
    }
    if (f & VK_SHADER_CREATE_DISPATCH_BASE_BIT_EXT) {
        str += "DISPATCH_BASE|";
    }
    if (f & VK_SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT) {
        str += "FRAGMENT_SHADING_RATE_ATTACHMENT|";
    }
    if (f & VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT) {
        str += "FRAGMENT_DENSITY_MAP_ATTACHMENT|";
    }
    return std::move(str);
}

String On_Str_VkAccelerationStructureCreateFlagsKHR(VkAccelerationStructureCreateFlagsKHR f) {
    String str = "|";
    if (f & VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR) {
        str += "DEVICE_ADDRESS_CAPTURE_REPLAY|";
    }
    if (f & VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT) {
        str += "DESCRIPTOR_BUFFER_CAPTURE_REPLAY|";
    }
    if (f & VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV) {
        str += "MOTION|";
    }
    return std::move(str);
}
} // namespace vkt
